не отрабатывает ControlSend
Пытаюсь вы ввести строку с помощью autoit в нотепад++
Вот рабочее поле нотепада++
вот код
; Запуск блокнота только так вызывается
Run('C:\kononov\Notepad++\notepad++.exe')
; Ожидание 5 секунд до появление окна блокнота и проверка
$hWnd = WinWait("[CLASS:Notepad++]", "", 5)
If Not $hWnd Then
MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
Exit
EndIf
;ControlClick(handle, button1);
; проверка открития
$hWnd1 = WinGetHandle($hWnd, "[CLASS:ToolbarWindow32; INSTANCE:1]")
If Not $hWnd1 Then
MsgBox(4096, 'Сообщение', 'Строчка окна не найдена,WinGetHandle, завершаем работу скрипта')
Exit
EndIf
; нажатие клавиши и проверка , нажатие клавиши "новый "
$hWnd3 =ControlClick($hWnd, "", "[CLASS:ToolbarWindow32]", "Left", 1,11, 12)
If Not $hWnd3 Then
MsgBox(4096, 'Сообщение', 'Строчка не отработала, ControlClick, завершаем работу скрипта')
Exit
EndIf
; нажатие клавиши и проверка , нажатие на рабочей поверхности
$hWnd4 =ControlClick($hWnd, "", "[CLASS:SysTabControl32]", "Left", 1,550, 50)
If Not $hWnd4 Then
MsgBox(4096, 'Сообщение', 'Строчка не отработала, ControlClick, завершаем работу скрипта')
Exit
EndIf
; Высылает строку символов в элемент увы строуон не реализует
$hWnd5 = ControlSend("[CLASS:Notepad++]", "Tab", "[CLASS:SysTabControl32]", "This is some text")
Send("asddas") ; вот эту срочку прекрастно отрабатывает
; увы эту строку не отрабатывает , но при это ошибку не выводит
;$hWnd5 =ControlSend($hWnd, "Tab", "[CLASS:SysTabControl32]", " new 1 ")
If Not $hWnd5 Then
MsgBox(4096, 'Сообщение', 'Строчка не отработала, ControlSend, завершаем работу скрипта')
Exit
EndIf
; Закрывает блокнот. ( пока открытым держим )
; WinClose($hWnd)
я могу это реализовать через клики мышкой, но увы я хочу через классы чтобы иметь возможность проверки.
Ответы (1 шт):
Автор решения: timob256
→ Ссылка
Во общем вот моя реализация :
; Запуск блокнота только так вызывается
Run('C:\kononov\Notepad++\notepad++.exe')
; Ожидание 5 секунд до появление окна блокнота и проверка
$hWnd = WinWait("[CLASS:Notepad++]", "", 5)
If Not $hWnd Then
MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
Exit
EndIf
;ControlClick(handle, button1);
; проверка открития
$hWnd1 = WinGetHandle($hWnd, "[CLASS:ToolbarWindow32; INSTANCE:1]")
If Not $hWnd1 Then
MsgBox(4096, 'Сообщение', 'Строчка окна не найдена,WinGetHandle, завершаем работу скрипта')
Exit
EndIf
; нажатие клавиши и проверка , нажатие клавиши "новый "
$hWnd3 =ControlClick($hWnd, "", "[CLASS:ToolbarWindow32]", "Left", 1,11, 12)
If Not $hWnd3 Then
MsgBox(4096, 'Сообщение', 'Строчка не отработала, ControlClick, завершаем работу скрипта')
Exit
EndIf
; нажатие клавиши и проверка , нажатие на рабочей поверхности
$hWnd4 =ControlClick($hWnd, "", "[CLASS:SysTabControl32]", "Left", 1,550, 50)
If Not $hWnd4 Then
MsgBox(4096, 'Сообщение', 'Строчка не отработала, ControlClick, завершаем работу скрипта')
Exit
EndIf
; сам текст
$hWnd5 = ControlSend($hWnd, "", '', 'It works :-) yes')
If Not $hWnd5 Then
MsgBox(4096, 'Сообщение', 'Строчка не отработала, ControlSend, завершаем работу скрипта')
Exit
EndIf
Sleep(500)
;$hWnd6 = ControlSend($hWnd, "", '', '{Alt}{F4}')
$hWnd6 = ControlSend($hWnd, "", '', '^!s', 0)
If Not $hWnd6 Then
MsgBox(4096, 'Сообщение', 'Строчка не отработала, ControlSend, завершаем работу скрипта')
Exit
EndIf
Sleep(500)
$n = 4
;Send('+{TAB ' & $n & '}') ; нажимает четрые таба (лементы управления)
$hWnd7 = ControlSend($hWnd, "", '', '+{TAB ' & $n & '}', 0)
If Not $hWnd7 Then
MsgBox(4096, 'Сообщение', 'Строчка не отработала, ControlSend, завершаем работу скрипта')
Exit
EndIf
Sleep(500)
$hWnd8 = ControlSend($hWnd, "", '', '{ENTER}', 0)
If Not $hWnd8 Then
MsgBox(4096, 'Сообщение', 'Строчка не отработала, ControlSend, завершаем работу скрипта')
Exit
EndIf
Sleep(5000)
;send('^!s') ; соразмерно контрол альт р
; Закрывает блокнот. ( пока открытым держим )
WinClose($hWnd)
Этот ответ я освещаю Джони "lose canon" в переводе на русский Джони "пердёжник" спи спокойно брат
