SetTimer函数用法


本文整理自网络,侵删。

 program Project2; {$APPTYPE CONSOLE} uses SysUtils,windows; var msg:TMsg; procedure OK; begin Writeln('fuck'); end; begin settimer(0,10,1000,@OK); //0为句柄,10为ID ,1000为毫秒,@OK为函数地址 while GetMessage(msg, 0, 0, 0) do DispatchMessage(msg); end. //创建定时器函数的声明: SetTimer( hWnd: HWND; {与定时器相关联的窗口句柄} nIDEvent: UINT; {指定一个非 0 的定时器标识符} uElapse: UINT; {指定间隔时间, 单位是毫秒} lpTimerFunc: TFNTimerProc {每到时间后, 要调用的函数的指针} ): UINT; {返回定时器标识符; 失败返回 0} //移除定时器函数的声明: KillTimer( hWnd: HWND; {与定时器相关联的窗口句柄} uIDEvent: UINT {定时器标识符} ): BOOL; //处理 WM_TIMER 消息的回调函数的格式: TimerProc( hWnd: HWND; {与定时器相关联的窗口句柄} uMsg: UINT; {WM_TIMER 消息} idEvent: UINT; {定时器的标识符} Time: DWORD {以世界时间公约格式(UTC)指定的系统时间} ); {这是个过程, 无返回值} -------------------------------------------------------------------------------- 应该先理解一下再举例: SetTimer 的参数1: hWnd, 一般指定 Self.Handle 就可以了; SetTimer 的参数2: nIDEvent 是某个定时器的标识符, 说明可以创建若干个定时器, 随便给个正整数即可; SetTimer 的参数3: uElapse, 这相当于 VCL 中 Timer 类的 Interval 属性; 看来参数 1-3 还是非常简单, 不好理解的就是参数4: lpTimerFunc, 这是一个过程的地址. 任意一个过程的地址吗? 当然不是; 这个过程的参数结构是 Windows 系统规定的, 我们必须按规定去定义这个过程; 即使你用不到其中的参数也必须如此. -------------------------------------------------------------------------------- //举例: var i: Integer; //先定义回调函数 procedure MyTimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; Time: DWORD); begin Form1.Text := IntToStr(i); Inc(i); end; //创建定时器 procedure TForm1.Button1Click(Sender: TObject); begin SetTimer(Handle, 1, 10, @MyTimerProc); {每 1/100 秒调用一次 MyTimerProc} end; //删除定时器 procedure TForm1.Button2Click(Sender: TObject); begin KillTimer(Handle, 1); {创建时指定的定时器标识是 1, 这里必须要一致} end; -------------------------------------------------------------------------------- //如果回调过程是窗体类的一个方法, 需要这样: var i: Integer; //先定义回调函数 procedure TForm1.MyTimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; Time: DWORD); begin Text := IntToStr(i); Inc(i); end; //创建定时器 procedure TForm1.Button1Click(Sender: TObject); begin SetTimer(Handle, 1, 10, @TForm1.MyTimerProc); {每 1/100 秒调用一次 MyTimerProc} end; //删除定时器 procedure TForm1.Button2Click(Sender: TObject); begin KillTimer(Handle, 1); {创建时指定的定时器标识是 1, 这里必须要一致} end; 

相关阅读 >>

Delphi 之 对话框组件

Delphi 判断某个系统服务是否存在及相关状态

Delphi 批量日期格式化

Delphi之木马生成原理(资源文件,和文件流的应用)

Delphi 服务器与客户端的时间同步

截取程序的网络封包(Delphi hook api)

Delphi xe 移动平台 showmodal 范例

Delphi embeddedwb 遍历frames并执行子frame的js脚本

Delphi版本qq木马

Delphi 简单字符串截取函数

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...