Что нового

Проблема ввода символов с помощью ControlSend

JimmyN

Новичок
Сообщения
20
Репутация
0
и у меня проблема с функцией ControlSend. Она упорно высылает 2 вместо @, ну и периодически путает другие символы.
Знаю эта тема тут уже неоднакратно поднималось но я так и не нашел вразумительного ответа почему так происходит.
я увеличил таймауты

AutoItSetOption("SendKeyDelay", 20)
AutoItSetOption("SendKeyDownDelay", 20)

но это не помогло пришлось делать так

ClipPut($pass)
Sleep(500)
ControlSend($winname, "", 0, "{CTRLDOWN}v{CTRLUP}")

может есть какое то более простое решение, (язык по умолчанию английский в системе)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
JimmyN
Вроде, нет ошибок:
Код:
Run('notepad.exe')
$hWin = WinWait('[CLASS:Notepad]', '', 5)
If Not $hWin Then
	MsgBox(16, 'Error', 'Error')
	Exit
EndIf
For $i = 1 To 10
	ControlSend($hWin, '', 'Edit1', '{!}{@}{#}{$}{%}{^}{&}{*}{(}{)}{ENTER}')
Next
 
Автор
JimmyN

JimmyN

Новичок
Сообщения
20
Репутация
0
Ну дело в том что я посыла адрес электронной почты в игрушку и там [email protected]
и он отказывается вводить @
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
JimmyN
А если так попробовать
Код:
;...
ControlSend($hWin, '', '', 'blabla{@}gmail.com')
;...
 
Автор
JimmyN

JimmyN

Новичок
Сообщения
20
Репутация
0
да я по разному пробовал и так тоже, пишет через раз почему то,
и проблема в том что мне нужно
Код:
$var = [email protected]
ControlSend($hWin, '', '', $var)
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
JimmyN,
Попробуйте ControlSetText().
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
JimmyN
JimmyN сказал(а):
Ну дело в том что я посыла адрес электронной почты в игрушку
В какую игрушку?

Вот пример, прекрасно всё вставляется!
Код:
$sMail = "[email protected]"
WinActivate("The Bat!")
ControlSend("The Bat!", "", "[CLASS:TEdit; INSTANCE:1]", $sMail)
 
Автор
JimmyN

JimmyN

Новичок
Сообщения
20
Репутация
0
WoW, и на буржуйских форумах я видел что люди сталкивались с такой проблемой но ответа так и не нашел, ладно будем через буфер вставлять.
 

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
Сталкивался с аналогичной проблемой, при вводе сколько нибудь длинных последовательностей, начинали происходить ошибки (пропуски символов и др). Пришлось тоже задействовать буфер. совет:
Код:
$temp = ClipGet()
ClipPut('блаблабла')
ControlSend($hWin, '', '', '^v')
ClipPut($temp)

и ещё вот хорошая тема: http://autoit-script.ru/index.php?topic=314.0
 
Автор
JimmyN

JimmyN

Новичок
Сообщения
20
Репутация
0
Спасибо совет пригодился, в общем то проблема решена, хотя нестабильность функции как то напрягает)
 
Верх