Что нового

Как обойти некорректную работу функций ControlSend и ControlSetText

Tapok

Новичок
Сообщения
204
Репутация
0
Почему командами ControlSend и ControlSetText часто не корректно устанавливается текст в окно, например вместо "AQAAAA" ставится "AQA", часто вместо двойной буквы в середине текста ставится одна?
Какой функцией наиболее правильно передавать текст в окно, без сбоев?
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Протестировал на notepad - всё нормально.
Код:
;run
Run("notepad.exe")

;wait
Local $hwnd = WinWait("[CLASS:Notepad]", "", 10)
If Not $hwnd Then Exit MsgBox(16, "error", "error")

;set_send_text
Local $text = "AQAAAA"
Sleep(1000)
ControlSetText($hwnd, "", "Edit1", $text & @CRLF)
Sleep(1000)
ControlSend($hwnd, "", "Edit1", $text & "{ENTER}")
Sleep(2000)

;close
ControlSetText($hwnd, "", "Edit1", "")
WinClose($hwnd)
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
Почему тогда вместо "/" ставится вертикальная черта, разделенная пополам. Если окно ввода в русской раскладке, то все хорошо. По поводу того, что в блокноте все хорошо-да, иногда без сбоев передается, хочется их совсем исключить и понять, почему они вообще бывают...может временно теряется фокус или еще что и часть символов пропадает?
и
Код:
_WinAPI_SetKeyboardLayout(0x0419, $hwnd)

не помогает

Помогло следующее: перевод строки в массив и передача каждого элемента массива в окно с небольшой задержкой
 
Верх