kxing 发表于 2012-4-24 20:46:40

请教匹配窗口文本的问题

请问下获取某窗口句柄标题可以使用正则,文本参数能吗?
如果不能,那么换行的文本能匹配到吗

例如:

窗口包含文本:
xxx_1
xxx_2
xxx_3

我尝试过 wingethandle("","xxx_1"&@crlf&"xxx_2"&@crlf&"xxx_3") 无效。
还请高人指点,多谢!!!

user3000 发表于 2012-4-24 20:59:37

本帖最后由 user3000 于 2012-4-24 21:28 编辑

窗口匹配可以用正则, 试试:

正则匹配类名:
WinGetHandle("")
正则匹配标题文字:
WinGetHandle("")

xms77 发表于 2012-4-24 21:18:13

回复 1# kxing
好像这个函数不可以只通过“窗口文本”来获取窗口句柄的吧?

xms77 发表于 2012-4-24 21:22:24

本帖最后由 xms77 于 2012-4-24 21:29 编辑

回复 1# kxing
刚刚试了一下,可以只通过窗口文本来得到句柄的,但是窗口文本不支持正则。

user3000 发表于 2012-4-24 21:27:09

回复 4# xms77

打开Scite编辑器直接运行下面代码!
我这可以获取到完整标题及窗口句柄
$title = WinGetTitle("")
$handle = WinGetHandle("")
MsgBox(0, $title, $handle)

xms77 发表于 2012-4-24 21:32:28

回复 5# user3000
3000兄,楼主的意思是要通过窗口文本来获得句柄,可能他相同的窗口标题有多个,只是窗口文本不同,所以他想通过文本来,我试了一下好像窗口文本参数是不支持正则的。

user3000 发表于 2012-4-24 21:39:52

回复 6# xms77

是哦, 他给出的示例, 条件也是放在了第2个参数中!
是我看错了!
第2个参数不支持正则表达式的!

kxing 发表于 2012-4-24 21:41:05

要正则匹配窗口文本,不是窗口标题。
标题我知道能用正则,但是没看过正则匹配文本。

whitehead 发表于 2012-4-24 21:41:40

我也试了,好像窗口文本参数不支持正则。

kxing 发表于 2012-4-24 21:43:16

正因为窗口标题没有特征,因此只能通过窗口文本。
但是一小段文本也不足以确定,因此希望匹配多行文本。

user3000 发表于 2012-4-24 21:43:57

回复 1# kxing

换行的文本能匹配到
经测试, 在记事本打了三行字, 省略标题, 只匹配这3行字, 可以获取到句柄
$title = WinGetTitle('', 111 & @CRLF & 222 & @CRLF & 333)
$handle = WinGetHandle('',111 & @CRLF & 222 & @CRLF & 333)
MsgBox(0, $title, $handle)

xms77 发表于 2012-4-24 21:56:17

回复 10# kxing
楼主不能找到窗口文本的特征文本吗?

502762378 发表于 2012-4-24 22:38:54

我不懂正则,也觉得没有必要这样做,楼主如果怕判断窗口标题加一个窗口文本不严谨,可以楼上可爱的狗狗所说的判断特征文本呀,也可以winwait相关标题的窗口出现,多判断一些控件文本,如果楼主只是抱着研究的态度探讨正则匹配文本,全当我多言

lixiaolong 发表于 2012-4-24 23:38:04

回复 11# user3000

有些窗口文本的换行只有换行符的~
楼主无法匹配可能是这个原因.
GUICreate('aa')
GUICtrlCreateLabel(111 & @LF & 222 & @LF & 333, 10, 10)
GUISetState()

$title = WinGetTitle('', 111 & @CRLF & 222 & @CRLF & 333)
$handle = WinGetHandle('',111 & @CRLF & 222 & @CRLF & 333)
MsgBox(0, $title, $handle)

kxing 发表于 2012-4-25 02:47:00

哎,窗口标题普通,文本内容几乎没有。
除非能用正则窗口文本,否则没有任何意义。
而且这里还涉及到效率问题,尽量能少调用函数就少。
页: [1] 2
查看完整版本: 请教匹配窗口文本的问题