随笔 - 49  文章 - 0 评论 - 19 
<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

Web Site Traffic Counter

常用链接

留言簿(3)

随笔分类(48)

随笔档案(49)

搜索

  •  

积分与排名

  • 积分 - 48485
  • 排名 - 107

最新评论

阅读排行榜

评论排行榜

在Autoit中实现VB的Timer控件,用过VB的人都知道Timer控件,即在一段时间间隔内重复运行一段代码,此间暂停脚本运行,这一点和Autoit的AdlibEnable函数很相似。但与之不同的是前者可以建立无数个Timer控件,而后者只能AdlibEnable一次。

#Include <Date.au3>
#include <GuiConstants.au3>

GuiCreate("Timer",  124,  99)

$Label_1 =  GuiCtrlCreateLabel("Time loading...",  10,  10,  140,  20)
$Label_2 =  GuiCtrlCreateLabel("00",  10,  40,  70,  20)
$Label_3 =  GuiCtrlCreateLabel("00",  10,  70,  80,  20)

Global  $pTimerProc = DLLCallbackRegister("_TimerProc","int" ,"hwnd;uint;uint;dword")
Global  $uiTimer =  DllCall("user32.dll",  "uint",  "SetTimer",  "hwnd",  0,  "uint",  0,  "int",  1000,  "ptr",  DllCallbackGetPtr ($pTimerProc))
Global  $pTimerProc2 = DLLCallbackRegister("_TimerProc","int" ,"hwnd;uint;uint;dword")
Global  $uiTimer2 =  DllCall("user32.dll",  "uint",  "SetTimer",  "hwnd",  0,  "uint",  0,  "int",  200,  "ptr",  DllCallbackGetPtr ($pTimerProc2))
Global  $pTimerProc3 = DLLCallbackRegister("_TimerProc","int","hwnd;uint;uint;dword")
Global  $uiTimer3 =  DllCall("user32.dll",  "uint",  "SetTimer",  "hwnd",  0,  "uint",  0,  "int",  700,  "ptr",  DllCallbackGetPtr ($pTimerProc3))

GuiSetState()
While  1
     $msg =  GuiGetMsg()
     Select
     Case  $msg =  $GUI_EVENT_CLOSE
         DllCall("user32.dll",  "int",  "KillTimer",  "hwnd",  0,  "uint",  $uiTimer[0])
       DllCallbackFree ($pTimerProc)
        DllCall("user32.dll",  "int",  "KillTimer",  "hwnd",  0,  "uint",  $uiTimer2[0])
       DllCallbackFree  ($pTimerProc2)
        DllCall("user32.dll",  "int",  "KillTimer",  "hwnd",  0,  "uint",  $uiTimer3[0])
       DllCallbackFree  ($pTimerProc3)
        Exit
     Case  Else
         ;;;
     EndSelect
WEnd
Exit

Func _TimerProc($hWnd,  $uiMsg,  $idEvent,  $dwTime)
     ;$idEvent能分辨是哪个Timer控件调用了这个函数
     ;$dwTime表示已开机的时间
     Switch  $idEvent
         Case  $uiTimer[0]
             GUICtrlSetData($Label_1,_Now  (  ))
         Case  $uiTimer2[0]
             GUICtrlSetData($Label_2,GUICtrlRead($Label_2)+1)
         Case  $uiTimer3[0]
             GUICtrlSetData($Label_3,GUICtrlRead($Label_3)+1)
     EndSwitch
EndFunc

posted on 2008-01-17 11:49 疾风随影 阅读(3127) 评论(0)  编辑 收藏 引用 所属分类: AutoIT column
只有注册用户登录后才能发表评论。