afan 发表于 2016-9-6 16:13:08

Global $iTimer = TimerInit()
Local $iS = 6        ;间隔秒数
AdlibRegister('_add_report_items', $iS * 1000)
While 1
        Sleep(1000)
        Tooltip($iS - Round(TimerDiff($iTimer) / 1000))
Wend

Func _add_report_items()
        Dim $iTimer = TimerInit()
        Msgbox(0, '', 'refresh list view', 1)
EndFunc   ;==>_add_report_items

heroxianf 发表于 2016-9-6 17:13:10

回复 16# afan


    {:face (239):}   这个到位,学习了AdlibRegister。

seniors 发表于 2016-9-6 17:57:28

#include <Misc.au3>
#include <WinAPISys.au3>

Opt('TrayAutoPause', 0)

Local $hTimerProc = DllCallbackRegister('_add_report_itemsc', 'none', 'hwnd;uint;uint_ptr;dword');注册定时器回调函数
Global $oldMs = _WinAPI_GetTickCount();系统启动以来的毫秒数
Local $iTimerID = _WinAPI_SetTimer(0, 0, 1000, DllCallbackGetPtr($hTimerProc));每1000毫秒启动定时程序_add_report_itemsc

Do
    Sleep(100)
Until _IsPressed('1B');按ESC退出

_WinAPI_KillTimer(0, $iTimerID);关闭定时器
DllCallbackFree($hTimerProc);反注册定时器回调函数

Func _add_report_itemsc($hWnd, $iMsg, $iTimerID, $iTime)
    #forceref $hWnd, $iMsg, $iTimerId, $iTime
    ConsoleWrite( Floor(($iTime - $oldMs)/ 1000) & @CRLF);显示的秒数
EndFunc   ;==>_TimerProc
定时器版本

chamlien 发表于 2016-9-6 23:46:14

回复收藏,楼主的想法比较特别
页: 1 [2]
查看完整版本: [已解决]要如何讀取AdlibRegister剩餘的秒數