Как проверить, существует ли кнопка в окне с помощью AutoHotkey?

В моем случае бывают случаи, когда определенная кнопка существует и не существует.

Есть ли способ проверить, существует ли определенная кнопка в окне с помощью AutoHotkey?


person Manie    schedule 21.12.2011    source источник
comment
Можете ли вы привести конкретный пример? Какой тип кнопок вы бы искали? В каком типе приложения?   -  person Stevoisiak    schedule 02.10.2017


Ответы (2)


Если вы используете ControlGet с командой, а элемент управления не существует, то для ErrorLevel будет установлено значение 1.

Вы можете использовать ControlGet, чтобы получить дескриптор окна (HWND) элемента управления. Если элемент управления существует, дескриптор окна будет помещен в вашу выходную переменную, а ErrorLevel будет быть установлен на 0, иначе выходная переменная будет пустой, а ErrorLevel будет равен 1.

В приведенном ниже примере первые две строки получают дескриптор окна для кнопки «ОК» на экране «О программе» Блокнота (конечно, экран «О программе» должен отображаться, чтобы он работал) и отображают результаты в MsgBox. Класс NN кнопки «ОК» — это Button1.

Вторые две строки к тому же, но для элемента управления с ClassNN Button2, который не существует.

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%
person Gary Hughes    schedule 22.12.2011

Вот пример кода из 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%
    }
}
person kenorb    schedule 26.01.2019