2012-08-22 122 views
0

我正在嘗試解決夏令時問題。該代碼將運行在嵌入在.net 2.0 fw下的Windows XP上。除了一個小問題之外,我有一切工作。要求是以編程方式在TimeDate.cpl面板中設置夏令時設置,該面板只是您設置日期和時間的窗口。我發現要做到這一點的唯一方法是創建一個註冊表項,這確實有效。但是,直到您物理打開TimeDate窗口,點擊時區面板並點擊應用,它纔會生效。即使重新啓動也不會這樣做。我的問題是:有沒有辦法讓我的C#應用​​程序打開TimeDate窗口並單擊apply?無法應用夏令時在C#中的更改

回答

0

可能不會,因爲你首先做錯了。 :-)

正確的做法是使用API​​函數 SetDaylightTime,它接受一個參數,指示夏令時是否在本地時區生效。 上面提到的函數在XP Embedded上不可用,顯然。剩下的是有效的,AFAIK。

對於使用註冊表,您不需要TimeDate控制面板小程序;您可以使用Daylight Saving Time Registry Settings中的代碼示例作爲示例直接在代碼中執行此操作。注意在代碼中調用RegFlushKey;他們使這些變化持續下去。另外請注意,它提到更改對下一次重新啓動有影響,而不是立即;這就是WinXP桌面(以及Vista/Win7,IIRC)的工作方式。

+0

這就是我用來設置時區。我不清楚這是否允許您切換夏令時。 –

+0

對不起;我不知道你引用的是我的答案的哪個版本。 (我首先發布了一個不正確的文章,然後用'SetDaylightTime'發佈了這個修正後的版本。)如果是'SetDaylightTime'的答案,文檔特別指出該函數的目的是表明夏令時是否生效; Windows會根據需要根據UTC調整時間。 –

+0

RegFlushKey調用看起來很有希望。我試圖將它移植到C#以便我可以測試它。 –