我正在编写一个与基于Java的Web应用程序交互的AutoHotkey脚本。有一次,我希望我的脚本暂停并等到它找到控件SunAwtCanvas1
后再继续运行。
我知道您可以使用IfWinExist
检查窗口是否存在,但我不知道按钮或控制字段是否存在类似的命令。
如何检查AutoHotkey中是否存在控制字段?
答案 0 :(得分:1)
使用AU3_Spy.exe进行检查时,您可能会在文本中找到控件名称。在那种情况下,只需
IfWinExist
wintitle
, SunAwtCanvas1
会做的。
虽然我更喜欢功能语法,特别是因为埃及括号可用:
If (WinExist(wintitle, "SunAwtCanvas1")) {
// …
}
如果控件名称不在文本中,或者它位于文本中但可能不可见,并且您想知道它是否可见,则ControlGet可以读取该控件的某些属性。
如果控件不存在,则ErrorLevel设置为1,OutputVar设置为空白。此外,它会在Try {}块中抛出异常。
此外,某些控件可能已预先创建但不可见。因此,要检查是否显示控件:
ControlGet ctrlVisible, Visible,, SunAwtCanvas1
If (ctrlVisible) { // like IfControlVisible
// …
}
AFAIK没有类似WinWait的操作符用于控件,但是简单的循环可以做到:
// add IfWinExist or WinWait somewhere before to fill in LastWindowFound
Loop
{
ControlGet ctrlVisible, Visible,, SunAwtCanvas1
Sleep 100 ; to avoid high CPU load, and to allow app finish its operations in case control is found in middle of something (that's why it's after ControlGet, not before)
} Until ctrlVisible
在此示例中,ControlGet将等待控件显示在LastWindowFound中。或者您可以在ControlGet中将wintitle / wintext / excludetitle / excludetext指定为参数。