找回密码
 加入
搜索
查看: 1813|回复: 22

[AU3基础] 求助个正则找控件的问题[已解决]

[复制链接]
发表于 2022-1-26 08:28:07 | 显示全部楼层 |阅读模式
本帖最后由 z761003 于 2022-1-26 09:57 编辑

有个控件类名:AfxWnd42s3 其中的42这个位置有可能是另外1至3个数字,3这个位置有可能是另外1到2个数字,我想写正则给这个类名的控件发送个F1
使用
$Hwnd=WinGetHandle("[active]")
ControlSend( $Hwnd, "", "AfxWnd140s3", "{F1}") ;正确,可以成功

可使用
ControlSend( "[CLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}]", "", "", "{F1}")  ;不成功

不知道问题是出在我正则上,还是出在其它哪里,求大佬帮解下
正则本身我测试过,好像没问题,StringRegExp("AfxWnd42s3", 'AfxWnd[0-9]{1,3}s[0-9]{1,2}') 报True
发表于 2022-1-26 08:57:22 | 显示全部楼层
[CLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}]  改成   [REGEXPCLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}])  试试
 楼主| 发表于 2022-1-26 09:09:22 | 显示全部楼层
ControlSend( "[REGEXPCLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}]", "", "", "{F1}")  这样也没成功
 楼主| 发表于 2022-1-26 09:09:49 | 显示全部楼层
itzyx 发表于 2022-1-26 08:57
[CLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}]  改成   [REGEXPCLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}])  试试

帮看看,好像还是不行
 楼主| 发表于 2022-1-26 09:10:58 | 显示全部楼层
使用正则时,如果匹配到不只一个控件,而是多个,它是全每个都发送按钮吗
发表于 2022-1-26 09:12:12 | 显示全部楼层
ControlSend( "[CLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}]", "", "", "{F1}")  ??????????????????一个问题如楼上所说,正则匹配类名应使用REGEXPCLASS,第二个问题,参数也不对吧,粗心
发表于 2022-1-26 09:26:47 | 显示全部楼层
z761003 发表于 2022-1-26 09:09
帮看看,好像还是不行

额,那个是控件匹配的类名,你没输入控件ID,怎么成功,ControlSend( $Hwnd, "", "[REGEXPCLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}]", "{F1}")
 楼主| 发表于 2022-1-26 09:47:24 | 显示全部楼层
ControlSend( $Hwnd, "", "[REGEXPCLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}]", "{F1}")   也不行
 楼主| 发表于 2022-1-26 09:48:10 | 显示全部楼层
tubaba 发表于 2022-1-26 09:12
ControlSend( "[CLASS:AfxWnd[0-9]{1,3}s[0-9]{1,2}]", "", "", "{F1}")  ??????????????????一个问题如楼 ...

能帮我写个正确的吗,我试了也不行
 楼主| 发表于 2022-1-26 09:50:40 | 显示全部楼层
我发现 ControlSend( $Hwnd, "", "[REGEXPCLASS:AfxWnd140s3]", "{F1}") 这个样子都不行
 楼主| 发表于 2022-1-26 09:56:00 | 显示全部楼层
解决了,,ControlSend( $Hwnd, "", "[REGEXPCLASS:AfxWnd[0-9]{0,3}s]", "{F1}")   成功
原来不用正则时直接把后面的INSTANCE编号一起带上了,但正则里应该不能带这个,估计
发表于 2022-1-26 10:10:43 | 显示全部楼层
z761003 发表于 2022-1-26 09:56
解决了,,ControlSend( $Hwnd, "", "[REGEXPCLASS:AfxWnd[0-9]{0,3}s]", "{F1}")   成功
原来不用正则时 ...

没用正则时  输入的是类名+INSTANCE,就像平时常用的 button1 ,edit2 这样子, REGEXPCLASS 是窗口类名 正则表达式用法,没说清楚我以为控件类名就是:AfxWnd42s3 呢
 楼主| 发表于 2022-1-26 11:04:47 | 显示全部楼层
itzyx 发表于 2022-1-26 10:10
没用正则时  输入的是类名+INSTANCE,就像平时常用的 button1 ,edit2 这样子, REGEXPCLASS 是窗口类名  ...

不好意思,不是我没说清楚,而是我对这个不懂,不知道有分别。另外我发现类名CLASS或以前面加REGEXP正则,可INSTANCE或TEXT前面不能加REGEXP正则,好奇怪
 楼主| 发表于 2022-1-26 11:08:52 | 显示全部楼层
我现在使用这句 ControlSend( $Hwnd, "", "[REGEXPCLASS:AfxWnd[0-9]{1,3}s;TEXT:HexinScrollWnd2]", "{F1}")  可以成功,不过HexinScrollWnd2这里头的2能用啥匹配下么,万一它有时候是其它数字呢
发表于 2022-1-26 11:35:01 | 显示全部楼层
TEXT 字符一般宜少不宜多,后面的 2 不加就行了,当然如果有多个匹配的控件则需使用其它的条件
ControlSend($Hwnd, "", "[REGEXPCLASS:AfxWnd\d+s; TEXT:HexinScrollWnd]", "{F1}")
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-27 01:15 , Processed in 0.078737 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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