找回密码
 加入
搜索
查看: 1977|回复: 5

[AU3基础] 如何使用事件模式 检测指定标题 Title 的非au3GUI窗口出现(已解决)

[复制链接]
发表于 2021-5-12 12:42:55 | 显示全部楼层 |阅读模式
本帖最后由 jiarqq 于 2021-5-12 18:37 编辑

如何使用事件模式 检测指定标题 Title 的非au3GUI窗口出现?

评分

参与人数 1金钱 -20 收起 理由
afan -20

查看全部评分

 楼主| 发表于 2021-5-12 18:25:41 | 显示全部楼层
本帖最后由 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)

 楼主| 发表于 2021-5-12 18:30:21 | 显示全部楼层
本帖最后由 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,而循环都好几个点。
发表于 2021-5-12 18:58:07 | 显示全部楼层
jiarqq 发表于 2021-5-12 18:30
已解决,自己动手 丰衣足食!

$hEventHook = _WinAPI_SetWinEventHook($EVENT_OBJECT_CREATE, $EVENT_OB ...

在回调函数里面 WinWait  _ _||
不需在主循环里,用 AdlibRegister 不香吗
 楼主| 发表于 2021-5-12 22:53:28 来自手机 | 显示全部楼层
这个需要对实时性要求较高,定时器不满足要求,且占资源高
发表于 2021-5-12 22:57:31 | 显示全部楼层
jiarqq 发表于 2021-5-12 22:53
这个需要对实时性要求较高,定时器不满足要求,且占资源高

第一次听说,你高兴就好.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-20 20:14 , Processed in 0.073790 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表