Похоже, вам просто нужно закрыть свою функцию с помощью «EndFunc». Это работает для меня.
WinWaitActive("Open")
HotKeySet("+!q", "ClickFill")
While(1)
Sleep(1000)
WEnd
Func ClickFill()
MsgBox(262144,"","Look I work!")
ControlClick("Open", "", "[CLASS:32770]")
ControlSend("Open", "", "[CLASS:32770]", "C:\au3")
Exit
EndFunc
Вот некоторый рабочий код для Notepad++
Global $g_hWinHandle, $g_hOpenWin
;set hotkey
HotKeySet("+!q", "ClickFill")
;open notepad++
ShellExecute(@ProgramFilesDir & "\notepad++\notepad++.exe")
;wait for notepad++ window
WinWait("[Class:Notepad++]")
If @error Then Exit
;get notepad++ window handle
$g_hWinHandle = WinGetHandle("[Class:Notepad++]")
;make sure the window is active
WinActivate($g_hWinHandle)
WinWaitActive($g_hWinHandle)
;open "Open" dialog
WinMenuSelectItem($g_hWinHandle, "", "&File", "&Open...")
;wait for "Open" dialog window
WinWaitActive("Open")
;get the "Open" dialog window handle
$g_hOpenWin = WinGetHandle("Open")
If @error Then Exit
;wait for hotkey
While (1)
Sleep(1000)
WEnd
Func ClickFill()
;make sure the window is active
WinActivate($g_hOpenWin)
WinWaitActive($g_hOpenWin)
;focus the toolbar
ControlFocus($g_hOpenWin, "", "[CLASS:ToolbarWindow32; INSTANCE:3]")
ControlCommand($g_hOpenWin, "", "[CLASS:ToolbarWindow32; INSTANCE:3]", "SendCommandID", "1280")
;send our command to the toolbar
ControlSetText($g_hOpenWin, "", "Edit2", "C:\au3")
ControlSend($g_hOpenWin, "", "Edit2", "{ENTER}")
Exit
EndFunc ;==>ClickFill
В приведенном выше примере вы увидите, что я использую ControlFocus и ControlCommand для элемента управления ToolbarWindow32. Большинство диалоговых окон имеют элемент управления ToolbarWindow32. Чтобы имитировать нажатие на них, вы должны использовать ControlCommand с опцией SendCommandID. Вы можете получить этот идентификатор на вкладке панели инструментов в информационном инструменте AutoIt. Однако вы увидите, что после щелчка по элементу управления ToolbarWindow32 фокус переходит на элемент управления редактирования. Этот элемент управления редактированием — это то, на что вам нужно отправить текст, если вы хотите изменить каталоги. Найти этот элемент управления с помощью инструмента AutoIt может быть немного сложно. Вам нужно будет убедиться, что в параметрах не установлен флажок «Заморозить».
Если у вас все еще есть проблемы с кодом, я бы порекомендовал вам сначала убедиться, что вы можете заставить код работать без горячей клавиши. Затем попробуйте это с помощью горячей клавиши с одной буквой, а затем, наконец, попробуйте с вашей комбинацией из нескольких горячих клавиш. Не имея доступа к вашему компьютеру, я просто предполагаю, но подозреваю, что вы неправильно обращаетесь к адресной строке. На вашем компьютере также может быть запущена программа, использующая ту же горячую клавишу.
person
MrAutoIt
schedule
27.11.2015