2015-05-21 28 views
2

我有一個長時間運行(並且幾乎總是顯示)的應用程序,它顯示當前時間。目前,如果您更改時區,時間格式或語言,則格式不會更改,除非我退出並重新啓動應用程序。如何檢測這些更改,以便我可以立即刷新格式?在Windows中檢測日期/時間格式更改

請注意,這是本機的,而不是託管代碼(我無法更改),因此任何僅託管的內容都是正確的。

+0

請參閱[有人在Windows更改時鐘時發生API事件嗎?](http://stackoverflow.com/q/756506/719186) – LarsTech

+0

不受管理。將編輯清楚。 (雖然WinAPI標籤應該暗示;))。儘管WM_TIMECHANGED可能是我需要的。 – Donnie

+1

'WM_TIMECHANGE'肯定。也許看看['ITfLanguageProfileNotifySink'](https://msdn.microsoft.com/en-us/library/windows/apps/ms628769.aspx)和['WM_INPUTLANGCHANGE'](https://msdn.microsoft.com /en-us/library/windows/desktop/ms632629.aspx),也許[[WM_SETTINGCHANGE]](https://msdn.microsoft.com/en-us/library/windows/desktop/ms725497.aspx)。 –

回答

5

更改時區將向所有頂級窗口發送WM_TIMECHANGE消息,而更改時間格式將發送WM_SETTINGCHANGE消息。更改語言(系統區域設置)需要重新啓動,因此不會發送消息。