如何使用事件模式 检测指定标题 Title 的非au3GUI窗口出现(已解决)
本帖最后由 jiarqq 于 2021-5-12 18:37 编辑如何使用事件模式 检测指定标题 Title 的非au3GUI窗口出现? 本帖最后由 jiarqq 于 2021-5-13 17:05 编辑
#include <WinAPI.au3>
Opt("TrayMenuMode", 1) ;1 = 没有默认菜单;0 =(默认值)脚本暂停/退出菜单
Opt("TrayIconDebug", 1) ;1 = 显示调试信息;0 = (默认值)不显示调试信息
OnAutoItExitRegister('OnAutoItExit')
$hEventProc = DllCallbackRegister('_WinEventHook_Proc', 'none', 'ptr;dword;hwnd;long;long;dword;dword')
$hEventHook = _WinAPI_SetWinEventHook($EVENT_OBJECT_CREATE, $EVENT_OBJECT_CREATE, DllCallbackGetPtr($hEventProc))
TraySetClick(8)
Local $Exit = TrayCreateItem("退出(&T)")
While 1
Switch TrayGetMsg()
Case $Exit
Exit
EndSwitch
WEnd
Func OnAutoItExit()
_WinAPI_UnhookWinEvent($hEventHook)
DllCallbackFree($hEventProc)
EndFunc ;==>OnAutoItExit
Func _WinEventHook_Proc($h_Hook, $iEvent, $hWnd, $idObject, $idChild, $iEventThread, $iEventTime)
<blockquote><span style="white-space:pre"> </span>$hWnd_ViewFolder = WinWait('浏览文件夹','',1)
本帖最后由 jiarqq 于 2021-5-12 18:49 编辑
已解决,自己动手 丰衣足食!
$hEventHook = _WinAPI_SetWinEventHook($EVENT_OBJECT_CREATE, $EVENT_OBJECT_CREATE, DllCallbackGetPtr($hEventProc))
注:EVENT_OBJECT_CREATE 常量,包含在APISysConstants.au3 udf中
之所以事件检测,是因为它要比放到 While 循环里 使用WinExists函数 要节省资源,事件cpu使用率几乎为0,而循环都好几个点。
jiarqq 发表于 2021-5-12 18:30
已解决,自己动手 丰衣足食!
$hEventHook = _WinAPI_SetWinEventHook($EVENT_OBJECT_CREATE, $EVENT_OB ...
在回调函数里面 WinWait_ _||
不需在主循环里,用 AdlibRegister 不香吗 这个需要对实时性要求较高,定时器不满足要求,且占资源高 jiarqq 发表于 2021-5-12 22:53
这个需要对实时性要求较高,定时器不满足要求,且占资源高
第一次听说,你高兴就好.
页:
[1]