2010-02-24 56 views
1

我幾乎覺得骯髒不得不問這個問題,但我被困在一個不幸的位置。2個應用程序2個時區,我可以編程嗎?

我們急於提供一個非常快速和骯髒的臨時解決方案。我們需要運行2個第三方應用程序(幸運的是不是同一時間)。應用程序嚴重依賴於時間。一個需要GMT而另一個需要BST(英國夏令時)。所以在英國夏令時GMT和BST是一個小時不同的時間。

我們想寫一個小應用程序,可以在啓動relavent應用程序之前更改系統時間。這被證明比聲音要困難一些。主要的問題是,在改變之前你永遠不知道時間是正確的。筆記本電腦可能在我們的應用程序正常運行(電池問題等)時已關閉。

我們可以通過網絡與服務器同步時間。但是我一直無法確定這是什麼時候發生的。我發現有一個WM_TIMECHANGED窗口消息在設置時間時播放。所以這可以使用。

我們也可以在登錄時顯示消息並讓用戶驗證開始時間,但用戶很快就會對此失明,或者無法意識到重要性。


A working example of this would be: 
1: Laptop set to BST (Current time is 13:00) 
2: Open app one (GMT) time will change to 12:00 
3: Close app one (GMT) time will change to 13:00 
4: Open app one (BST) time will remain at 13:00 
5: Close app one (BST) time will change to 13:00 

沒有人有任何巧妙的構思?

+0

Naanook喜歡從失去的男孩的狗? :) – Layke 2010-02-24 14:48:51

回答

0

實際上並不是一個解決方案,但是我們的工作都是圍繞這兩個應用程序進行的。

謝謝

0

在VM中運行一個應用程序

+0

我考慮過這個。但不幸的是,這些應用程序使用硬件與另一個系統連接另外我們的用戶會感到困惑。 – Nanook 2010-02-24 14:46:54

0

您是否可以在應用程序內同步服務器的時間?那麼你會知道它已經同步了,並且時間是正確的。由於您知道服務器的時區,因此您可以根據正在運行的應用程序調整時間。

編輯: 因爲你不能總是訪問你要承擔時間的網絡是正確的(即你不能改變它),如果應用程序在呼喚GetLocalTime(而不是GetSystemTime),那麼你可以改變而不是時間來調整GetLocalTime的結果。

如果應用程序正在調用GetSystemTime(因此您必須更改時間),您需要一個標記(例如磁盤上的文件),告訴您的應用程序您已更改時間並且未設法更改它返回(由於意外終止)。這樣你總是會知道時間是正確的(沒有標記)或者時間已經移動(標記存在)

+0

只是爲了讓事情變得困難,筆記本電腦並不總是能夠訪問網絡。我開始認爲這是不可能的。但實際上改變時間非常簡單,嘿 – Nanook 2010-02-24 15:15:45

相關問題