Функция ControlSend

         Описание функции


ControlSend

Выслать строку символов в элемент.

ControlSend ( "title", "text", controlID, "string" [, flag = 0 ] )

Параметры

title Заголовок/дескриптор/класс окна. См. заголовки и текст окон (расширенные).
text Текст окна.
controlID Идентификатор элемента управления. Смотрите Элементы управления.
string Строка символов, высылаемая в элемент.
flag [необязательный] Изменить интерпретацию клавиш:
0 - (по умолчанию), Текст содержит специальные символы, такие как + указывающие на SHIFT и {LEFT} указывающие на "стрелку влево".
1 - клавиши как есть.

Возвращаемое значение

Успех:Возвращает 1.
Ошибка:Возвращает 0, если окно/элемент не найден.

Примечания

ControlSend() работает аналогично Send(), но в отличии от последней может отправлять клавиши непосредственно окну/элементу, а не только активному окну.

ControlSend() ненадёжна только для консольных приложений, которые работают иначе, чем обычные окна (видимо проверяется физическое состояние, а не приём сообщений нажатых клавиш). Для обычных окон ControlSend() должна быть более надёжна, чем команда Send(), и подобно ей также высылает Shift, Ctrl, Alt и т.д.

Как уже упоминалось в справке функции Send(), клавиши, которые высылают различные символы при CAPS LOCK и использовании клавиши Shift не могут быть эмулированы. Например, Чешская клавиатура. Хорошим решением будет ControlSetText().

Элементам возможно в первую очередь понадобится указать фокус командой ControlFocus(), при обращении к элементам (controlID), созданным самим скриптом.

Opt("SendKeyDelay",...) изменяет продолжительность паузы между эмулированными нажатиями клавиш.
Opt("SendKeyDownDelay",...) изменяет продолжительность нажатого состояния клавиши, перед тем как отпустить.

См. также

ControlCommand, Send, ControlSetText, ControlFocus, SendKeyDelay (Опция), SendKeyDownDelay (Опция)

Пример

; Запуск блокнота
Run('notepad.exe')

; Ожидание 5 секунд до появление окна блокнота
$hWnd = WinWait("[CLASS:Notepad]", "", 5)
If Not $hWnd Then
    MsgBox(4096, 'Сообщение', 'Окно не найдено, завершаем работу скрипта')
    Exit
EndIf

; Высылает строку символов в элемент
ControlSend($hWnd, "", "Edit1", "Эта строка выслана в элемент Edit")

; Закрывает блокнот.
WinClose($hWnd)