Показать полную графическую версию : [решено] Послать текст не используя Send()
morgan1991
03-04-2010, 18:56
Здравствуйте!
Столкнулся с такой проблемой, на Windows 7 не работает функция Send(), после её вызова сбиваются все клавиши в ОС. Например по нажатию левой клавиши мыши открываются мои документы.
Подскажите пожалуйста, как вставить уже имеющийся текст, причём с русскими символами?
Суть программы в следующем:
Пользователь ставит курсор в поле ввода в браузере, программе, не важно, затем жмёт компбинацию клавишь и в этом месте появляется заранее выбранный текст.
Пробовал копировать в буфер обмена, затем высылать ^V {RCTRL}V не получается.
Send() не катит.
Параметры поля в котороё нужно вставить текст, неизвестны.
Может есть какая UDF или чтонибудь похожее?
Помогите пожалуйста...
morgan1991
04-04-2010, 15:43
Ещё пробовал сделать так:
ControlSend("", "", ControlGetFocus(""), $Text)
но, так он вводит посимвольно весь текст, а не вставляет (впрочем как и send).
А самое плохое, что введённый этой функцией текст зависит от выбранного языка ввода.
Т.е. если у меня включен русский язык, а текст на английском, то функция введёт текст русскими буквами. И аналогично...
morgan1991, Используй
ControlSetText()
morgan1991
04-04-2010, 19:32
morgan1991, Используй »
я уже пробовал:
ControlSetText("", "", ControlGetFocus(""), $Text)
вообще ничего не вставляет...
morgan1991
04-04-2010, 20:19
Local $ArrPosWin = WinGetCaretPos()
ControlSetText("", "", " [X:" & $ArrPosWin[0] & "; Y:" & $ArrPosWin[1] & "]", $Text)
Так тоже не работает...
morgan1991, почитай в справке синтаксис команды ControlSetText. Сначала тебе нужно найти идентификатор нужного тебе поля и после этого вставлять его в вышеобозначенную функцию.
$ctrlID = '[CLASS:someclass; INSTANCE:someinstance]'; найдешь с помощью AutoIt v3 Window Info
ControlSetText("Title", '', $ctrlID, "new text")
morgan1991
04-04-2010, 23:00
kaster, дак читал я справку, иначе откуда бы знал про эту функцию?
Целый день уже в справке сижу и в английской и в русской.
найдешь с помощью AutoIt v3 Window Info »
Я же писал что поле ввода, каждый раз меняется, в этом то и проблема...
Параметры поля в котороё нужно вставить текст, неизвестны. »
Я думаю тут можно скопировать текст в буфер, затем симулировать комманду вставить в Windows (CTRL+V) и очистить буфер.
Но как симулировать эту кооманду я не знаю.
Send("^V") - не подходит, я уже писал выше, почему...
иначе откуда бы знал про эту функцию? »
так ты приводишь примеры где заголовки окон пустые. откуда я знаю, ты их оставил таковыми от незнания или просто для демонстрации того, что знаешь как пользоваться функциями но для экономии времени опускаешь некоторые вещи.
как правило Send, ControlSend сильно зависимы от поставленной по умолчанию раскладки клавиатуры. Попробуй методы поуниверсальнее -
Copy - Ctrl+Ins
Paste - Shift+Ins
morgan1991
04-04-2010, 23:16
kaster, Send("+{INS}") - работает, спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.