若窗口标题中带有"["和"]"符号,WinActive失效?[已解决]
本帖最后由 ReMind 于 2013-2-17 00:18 编辑使用WinActive函数时,若窗口标题中带有"["和"]"符号,则WinActive失效(不能激活窗口,也无法获取窗口中控件内容),请问如何处理?
PS:经测试,窗口标题中不带"["和"]"符号时,操作成功。 补充说明:原标题格式为:“-”,请注意第一字符和最后一个字符都是中括号;
因此拿记事本来作测试是有区别的,因为记事本无论如何改名,最终标题都是“ -记事本 ”;
经测试“ -记事本 ”这样的标题是可以成功使用winactive。 回复 2# ReMind
肯定会这样了,因为中括号有特殊用途,这时你要把它转义掉!
Opt("WinTitleMatchMode", 4)
$hWnd = WinGetHandle('-\]') 本帖最后由 ReMind 于 2013-2-12 23:12 编辑
谢谢 happytc 兄的指点。但按照您的提示修改,问题仍然没有解决。
现在发现原窗口一直有轻微的闪动现象,由于窗口界面数据需要跟其他部门实时同步,可能存在每秒刷新1次。
如果窗口是处于不停地刷新状态,这时使用WinActice是否能有效?
autoit 代码如下,如有错误请指出,谢谢!
$chehao = ""
Func Baoban()
Do
WinActivate("[售票系统] - [车辆报班登记]")
$chehao = ControlGetText("[售票系统] - [车辆报班登记]", "", "")
Until $chehao <> ""
MsgBox(0, "test", "内容=" & $chehao)
EndFunc ;==>Baoban
While 1
Baoban()
WEnd
回复 4# ReMind
看了你给的代码例子,怎么有点白说了,我没有见你把我上面给的代码加进去嘛
你先加进后再试吧 我试过了下面的代码,仍然是不能获取某个输入框上的内容。
$chehao = ""
Func Baoban()
Opt("WinTitleMatchMode", 4)
$hWnd = WinGetHandle(' - \[车辆报班登记\]]')
WinWaitActive($hWnd)
Do
WinActive($hWnd)
$chehao = ControlGetText($hWnd, "", "")
Until $chehao <> ""
MsgBox(0, "test", "车号=" & $chehao)
EndFunc ;==>Baoban
While 1
Baoban()
Sleep(5000)
MsgBox(0, "test2", "5秒后刷新!")
WEnd
问题已解决。经实践,在winactive中使用 "" 代替 "标题" 即可。
代码如下:
$chehao = ""
Func Baoban()
WinWaitActive("")
Do
WinActive("")
$chehao = ControlGetText("", "", "")
Until $chehao <> ""
MsgBox(0, "test", "车号=" & $chehao)
EndFunc ;==>Baoban
While 1
Baoban()
Sleep(5000)
MsgBox(0, "test2", "5秒后刷新!",5)
WEnd
页:
[1]