2015-03-03 29 views
0

我在VB6程序中成功實現了SetTimer Win API函數。在掃描文件夾並執行過程之前,用戶可以在INI文件中設置任意延遲時間(以分鐘爲單位)。有沒有辦法來捕獲Windows API SetTimer事件的剩餘時間?

我想知道是否有一種方法可以在定時器準備好執行過程代碼之前獲得剩餘的毫秒數(或分鐘數)?例如,如果用戶爲計時器配置了20分鐘,程序將SetTimer間隔設置爲20分鐘。 * 60000將其轉換爲毫秒。用戶在任何時候都想知道 - 「在程序執行開始之前,定時器間隔爲0之前需要多長時間?」任何人都可以提供建議嗎?

感謝

馬克

+0

不相同的格式,沒有API查詢「我的計時器到期之前,還剩下多少時間?」。如果你想這樣做,你需要在你的代碼中完成它。例如,不要在整個時間段內使用計時器,而應使用較短的時間間隔並計算在時間間隔到期之前需要觸發的計時器事件的數量。然後您可以對事件進行計數,並在任意時間點計算剩餘時間(TotalDelay - (EventsAlready * EventPeriod)/ EventPeriod)。 – 2015-03-03 00:24:43

+0

謝謝,這是一個很好的建議 - 我會測試這個。與此同時,我想出了另一種可能對其他人感興趣的方法 - 我會盡快完成代碼 – user1798977 2015-03-04 00:43:58

回答

0

商店,當你調用SetTimer的,並且當用戶要求對剩餘時間的時間比較當前的時間。

要使用您可以使用的GetTickCount API

Option Explicit 

Private Declare Function GetTickCount Lib "kernel32"() As Long 

Private mlngStartTime As Long 

Private Sub Command1_Click() 
    Print "seconds remaining : " & CStr((mlngStartTime - GetTickCount) \ 1000) 
End Sub 

Private Sub Form_Load() 
    mlngStartTime = GetTickCount + 20 * 60000 
End Sub 
+0

非常感謝。我需要測試一下,看看它是否符合我的需求。感謝您花時間爲我編寫代碼。欣賞它。 – user1798977 2015-03-04 00:44:44

+0

非常感謝。我需要測試一下,看看它是否符合我的需求。感謝您花時間爲我編寫代碼。欣賞它。 – user1798977 2015-03-04 00:44:44

相關問題