İşletim sisteminde tarih/saat değişimlerini uygulama içinden yakalamak için WM_TIMECHANGE windows mesajını kullanıyoruz. Ancak burada dikkatli olmanızı gerektirecek bir husus var. Bu mesaj uygulamanızın mesaj kuyruğuna birden fazla kez konulabiliyor. Yani, siz tarih/saati bir kere değiştirmenize rağmen bu mesaj size 2-3 kere gelebiliyor. Dolayısı ile bu mesajı yakaladığınız yerdeki kodlarınız da 2-3 kere çalıştırılmış oluyor.
*Buna engel olmak için, mesajı yakaladığınız yerde aşağıdaki kodu kullanarak mesaj kuyruğundan ilgili mesajın tüm türevlerini temizleyebilirsiniz:
var
*AMsg : TMsg;
begin
** PeekMessage(AMsg, AWindowHandle, WM_TIMECHANGE, WM_TIMECHANGE, PM_REMOVE);
* ...
* ...
* ...
end;
*Buna engel olmak için, mesajı yakaladığınız yerde aşağıdaki kodu kullanarak mesaj kuyruğundan ilgili mesajın tüm türevlerini temizleyebilirsiniz:
var
*AMsg : TMsg;
begin
** PeekMessage(AMsg, AWindowHandle, WM_TIMECHANGE, WM_TIMECHANGE, PM_REMOVE);
* ...
* ...
* ...
end;