能力值:
( LV12,RANK:230 )
2 楼
木有消息循环,Timer怎么执行啊。
能力值:
( LV2,RANK:10 )
3 楼
难道非要消息循环。。
能力值:
( LV9,RANK:170 )
4 楼
从网上搜的
360K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0T1M7#2)9J5k6h3u0U0j5$3&6Q4x3X3g2F1k6i4c8Q4x3V1k6@1K9s2u0W2j5h3c8Q4x3X3b7J5y4o6b7J5x3o6u0Q4x3X3b7I4i4K6u0V1x3g2)9J5k6h3S2@1L8h3H3`.
具体的代码如下:
.386
.model flat,stdcall
option casemap:none
;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
; Include 定义
;────────────────────────────────
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
;--------------------------------------------------------------------
; 数据段
;--------------------------------------------------------------------
.data?
;──────────────────────────────────
hqqNews dd ?
_count dd ? ;计数
;--------------------------------------------------------------------
;常数定义
;--------------------------------------------------------------------
.const
;──────────────────────────────────
_dqqNewsWindow db 'QQ游戏',0 ;窗口标题
;--------------------------------------------------------------------
; 代码段
;--------------------------------------------------------------------
.code
;--------------------------------------------------------------------
;定时器过程
;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
_Proctime proc
inc _count
invoke FindWindow, NULL,addr _dqqNewsWindow
.if eax
invoke SendMessage, eax,WM_CLOSE,NULL,NULL
.endif
ret
_Proctime endp
;--------------------------------------------------------------------
;主过程--建立定时器与消息循环
;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
_proc_min proc
local @stMsg : MSG
mov _count,1
invoke SetTimer,NULL,NULL,1000,addr _Proctime
mov hqqNews,eax
.while TRUE
.break .if _count > 500 ;每次1秒,500约为8分钟后退出程序。
invoke GetMessage,addr @stMsg,NULL,0,0
invoke TranslateMessage,addr @stMsg
invoke DispatchMessage,addr @stMsg
.endw
invoke KillTimer ,NULL,hqqNews
ret
_proc_min endp
;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
start:
call _proc_min
invoke ExitProcess,NULL
;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
end start
能力值:
( LV2,RANK:10 )
5 楼
回调函数是在特定的事件或条件发生时由系统调用的,用于对该事件或条件进行响应。
看MSDN
You can process the message by providing a WM_TIMER case in the window procedure. Otherwise, DispatchMessage will call the TimerProc callback function specified in the call to the SetTimer function used to install the timer.
实际上最终是由DispatchMessage ()来调用你的回调函数的。