В моем случае бывают случаи, когда определенная кнопка существует и не существует.
Есть ли способ проверить, существует ли определенная кнопка в окне с помощью AutoHotkey?
В моем случае бывают случаи, когда определенная кнопка существует и не существует.
Есть ли способ проверить, существует ли определенная кнопка в окне с помощью AutoHotkey?
Если вы используете 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%
Вот пример кода из 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%
}
}