如何使用AutoHotkey检查窗口上是否存在按钮?

时间:2011-12-21 05:04:29

标签: screen-scraping autohotkey

就我而言,有时某个按钮会存在而且不存在。

有没有办法使用AutoHotkey检查窗口上是否存在某个按钮?

2 个答案:

答案 0 :(得分:2)

如果将ControlGet与命令一起使用且控件不存在,则ErrorLevel将设置为1.

您可以使用ControlGet来获取控件的窗口句柄(HWND)。如果控件存在,窗口句柄将放在输出var中,ErrorLevel将设置为0,否则输出var将为空,ErrorLevel将为1.

在下面的示例中,前两行获取记事本的“关于”屏幕上“确定”按钮的窗口句柄(当然必须显示关于屏幕才能使其工作)并在MsgBox中显示结果。 Ok按钮的ClassNN是Button1。

对于具有ButtonN的ClassNN且不存在的控件而言,后两行是相同的。

ControlGet, Handle, Hwnd,, Button1, About Notepad ahk_class #32770
MsgBox Handle: %Handle%`n`nError: %ErrorLevel%

ControlGet, Handle, Hwnd,, Button2, About Notepad ahk_class #32770
MsgBox Handle: %Handle%`n`nError: %ErrorLevel%

答案 1 :(得分:0)

这是notepadplusplus_toogle_find_window.ahk中使用ControlGet的代码示例:

; Button1 is the class name for the title bar and close button of the results pane when docked
ControlGet, OutputVar, Visible,, Button1, Notepad++
if ErrorLevel = 0
{
    If OutputVar > 0
    {
        ; Found it docked
        Open := 1
        ; Get the size and coordinates of the title bar and button
        ControlGetPos, X, Y, Width, Height, Button1
        ; Set the coordinates of the close button
        X := Width - 9
        Y := 5
        ; Send a click
        ControlClick, Button1,,,,, NA x%X% y%Y%
    }
}