sdc7 发表于 2011-2-23 00:04:49

API SendMessageTimeout 的应用

看到某神在帖子中说
SendMessageTimeout 这个可以向窗口发送消息,并设置指定超时时间,你可以用这个来发送广播消息,或者枚举窗口一个个发送,来判断是否超时,超时就未响应。


通过上面来判断应用程序是否为无响应状态。
API函数说明SendMessageTimeout

VB声明
Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long
说明
向窗口发送一条消息。如窗口位于不同的线程中,则利用这个函数可以指定一个超时值,以便在另一个进程挂起的时候防止调用进程也永远挂起
返回值
Long,成功时返回TRUE,失败时返回FALSE。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,要接收消息的一个窗口的句柄
msg Long,消息的标识符
wParam Long,由消息决定
lParam Long,由消息决定
fuFlags Long,下述常数的一个或多个
SMTO_ABORTIFHUNG 如目标进程挂起,则函数立即返回
SMTO_BLOCK 除非函数返回,否则调用线程不能处理消息
SMTO_NORMAL 允许调用线程处理消息,同时保持函数继续执行
uTimeout Long,超时值,采用毫秒为单位
lpdwResult Long,用于装载函数结果的一个变量
上改成AU3为
DllCall("user32.dll","Int","SendMessageTimeoutA","Int",    ,"Int",    ,"Int",    ,"Int",    ,"Int",    ,"Int",    ,"Int",    )
问题是如何用使用本函数已经如何遍历应用程序来检测

ceoguang 发表于 2011-2-23 16:06:29

句柄设置为65535就是广播
页: [1]
查看完整版本: API SendMessageTimeout 的应用