找回密码
 加入
搜索
查看: 1002|回复: 7

[AU3基础] 获取窗口句柄能把窗口标题拿来通配吗

[复制链接]
发表于 2022-1-27 10:36:21 | 显示全部楼层 |阅读模式
比如我想获取窗口标题中含有-和[ 两个符号的窗口的句柄,能使用通配吗,还是必须要把所有窗口检测一遍?
发表于 2022-1-27 10:43:51 | 显示全部楼层
标题可以使用正则
 楼主| 发表于 2022-1-27 10:54:45 | 显示全部楼层
afan 发表于 2022-1-27 10:43
标题可以使用正则

随便发个样例我看下好么,谢谢
发表于 2022-1-27 10:57:06 | 显示全部楼层
#include <Array.au3>
$ahW = WinList('[REGEXPTITLE:-.*?\[]')
_ArrayDisplay($ahW)
 楼主| 发表于 2022-1-27 11:20:33 | 显示全部楼层
这都哪里查的资料,为什么我看不到这资料,好高级的操作,我想进一步学习。。
发表于 2022-1-27 11:24:31 | 显示全部楼层
本帖最后由 afan 于 2022-1-27 11:26 编辑

帮助文档就有的窗口标题与文本(高级)AutoIt 有 3 个 "窗口匹配" 模式. 这些模式可以使用 AutoItSetOption 函数通过 WinTitleMatchMode 选项设置.

模式 1 (默认)
匹配标题的开始部分.
在此模式下, 若窗口的标题是 无标题 - 记事本, 则可以匹配“无标题 - 记事本”、“无标题” 甚至 “无” 等字符串.
例如:
WinWait("Untitled")

模式 2
匹配标题的任意子串.
在此模式下, 若窗口的标题是 无标题 - 记事本, 则可以匹配 "无标题 - 记事本", "无标题", "记事本", "事本"等字符串.
例如:
WinWait("Notepad")

模式 3
完全匹配标题.
在此模式下, 若窗口的标题是 无标题 - 记事本, 则只能匹配 "无标题 - 记事本".

模式 4 (保持向后兼容)
高级模式
必须用高级窗口描述代替, 工作于任何模式.

模式 1 到 4
依照不同类型匹配, 不区分大小写.
高级窗口描述窗口 标题 参数使用特定描述. 这种描述使用下列属性识别窗口:
  • TITLE - 窗口标题
  • CLASS - 内部窗口类名
  • REGEXPTITLE - 窗口标题使用 正则表达式 (如果正则表达式错误, 则 @error 被设置为 2)
  • REGEXPCLASS - 窗口类名使用 正则表达式 (如果正则表达式错误, 则 @error 被设置为 2)
  • LAST - 先前 AutoIt 窗口函数使用的最后一个窗口 (见窗口函数管理)
  • ACTIVE - 当前活动窗口
  • X \ Y \ W \ H - 窗口的位置和大小
  • INSTANCE - 当多个属性时, 按指定属性的序号匹配(序号基于 1 计算)
窗口标题使用一或多个属性参数时的命令格式:
[属性1 : 值1; 属性:值2]

注意 : 如果值包含分号 ";", 则必须使用双引号.
示例, 等候一个类名(CLASS) 为 "Notepad" 的窗口.
WinWaitActive("[CLASS:Notepad]", "")

示例, 关闭当前激活窗囗
WinClose("[ACTIVE]", "")

示例, 等待 TITLE(标题) 为 "我的窗口" 和 CLASS(类名) 为 "我的类", (INSTANCE) 为 2 的第二个窗口
WinWaitActive("[TITLE:我的窗口; CLASS:我的类; INSTANCE:2]", "")

示例, 在窗口列表中, 匹配正则表达式定义的窗口标题
WinList("[REGEXPTITLE:(?i)(.*SciTE.*|.*Internet Explorer.*)]")
窗 口 句 柄 / HWNDsAutoIt 中的变量类型支持窗口句柄 (HWNDs).  窗口句柄是窗口创建时, 由 Windows 自动分配的特殊值.  当你有一个句柄时,你可以在任何使用标题/文本约定的函数调用中使用它来代替"标题"参数.  使用窗口句柄的优点是, 如果您打开具有相同标题/文本的应用程序的多个副本, 则可以使用句柄的唯一性标识它们. 当为"标题"参数使用窗口句柄时, 则"文本"参数将被完全忽略.
很多函数如 WinGetHandle, WinListGUICreate 都能返回窗口句柄. 重要的是要注意, 窗口句柄不能归类为数字或字符串 - 它是一个特殊的类型.
注意: 无论 WinTitleMatchMode 当前正在使用什么匹配模式, 窗口句柄都可以工作.
示例
Local $hWnd = WinGetHandle("无标题 - 记事本", "")
WinClose($hWnd)
14.5

在线也有 https://www.autoitx.com/Doc/html/intro/windowsadvanced.htm
发表于 2022-1-27 12:32:48 | 显示全部楼层
学习了,还能用正则
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-22 21:06 , Processed in 0.179027 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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