PDA

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


A_Salimi
یک شنبه 11 فروردین 1387, 02:08 بعد از ظهر
سلام

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

با تشکر

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

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

A_Salimi
سه شنبه 13 فروردین 1387, 11:23 قبل از ظهر
ممنونم ، فقط دو تا سوال دارم :

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

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


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

afx_msg void OnTimeChange( );