PDA

View Full Version : ممانعت از تغییر در ساعت سیستم



A_Salimi
یک شنبه 11 فروردین 1387, 12:38 عصر
سلام

من برنامه ای دارم که در اون از تایمرهای مختلفی استفاده میشه حالا اگه کسی ساعت سیستم رو تغییر بده ممکنه برنامه در جواب نهایی دچار اشکال بشه .
من در یکی از نرم افزارها تنظیماتی دیدم که از این تغییر جلوگیری میکرد و زمانی که یک cheekbox رو تیک میزدم با تغییر دادن ساعت سیستم این تغییرات اعمال نمیشد . . . این کار چطور ممکنه ؟

با تشکر

Nima_NF
سه شنبه 13 فروردین 1387, 03:11 صبح
راهی که به نظر من می رسد این است که در بازه های زمانی یک ثانیه، ساعت سیستم دریافت شود و در جایی ذخیره شود و در هر ثانیه ساعت با ساعت ذخیره شده قبلی مقایسه شود و اگر بیشتر از یک ثانیه (یا چند ثانی مجاز) اختلاف داشت آنگاه یعنی ساعت تغییر کرده است و باید با استفاده از توابع تنظیم ساعت، آن را به مقدار قبل + ثانیه های سپری شده تغییر داد تا زمان به حالت قبل بر گردد.

البته برای اطمینان چند ثانیه اختلاف بهتر هست به جای یک ثانیه معتبر باشد و می توان چند مرتبه نیز این آزمایش را کرد تا از صحت تغییر ساعت مطمئن شد.

A_Salimi
سه شنبه 13 فروردین 1387, 09:53 صبح
ممنونم ، فقط دو تا سوال دارم :

اول اینکه چه توابعی برای تنظیم ساعت سیستم و جود دارند چون تا حالا من فقط ساعت سیستم رو خوندم و تابعی برای دستکاری ساعت سیستم ندیدم !
دوم اینکه به جای چک کردن ثانیه به ثانیه ساعت آیا راه دیگری وجود نداره تا از تغییر ساعت سیستم مطلع شد ؟

Nima_NF
چهارشنبه 14 فروردین 1387, 19:54 عصر
برای تنظیم ساعت سیستم از این توابع می توانید استفاده کنید:
SetLocalTime
SetTimeZoneInformation



دوم اینکه به جای چک کردن ثانیه به ثانیه ساعت آیا راه دیگری وجود نداره تا از تغییر ساعت سیستم مطلع شد ؟
به جای روش چک کردن ثانیه ای از پردازش پیام WM_TIMECHANGE و یا در MFC از مورد زیر استفاده کنید، این پیام در موقعی که تغییری در ساعت سیستم داده می شود به برنامه ارسال می شود:



afx_msg void OnTimeChange( );