gifts2017

Как нажать на кнопку программно

Опубликовал Никита Долгих (Nik_1c_bitrix) в раздел Программирование - Практика программирования

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

Для программного нажатия на клавишу необходимо использовать объект Wscript.Shell.

Сей объект посылает одно или несколько нажатий клавиш в активное окно (имитация набора на клавиатуре).

Для этого необходимо создать COMОбъект и обратиться к методу SendKeys этого объекта, передав ему в качестве параметра строку, соответствующую нужной клавише. Например, для нажатия на клавишу CAPSLOCK напишем такой код:

Shell= Новый COMОбъект("Wscript.Shell");
Shell.SendKeys("{CAPSLOCK}");

А если нужно, чтобы клавиатура загадочно моргнула огнями, можно его продублировать:)


Описание: каждая клавиша задаётся своим символом. Например, чтобы задать нажатие друг за другом клавиш А, Б и В, нужно указать в качестве параметра строку "АБВ".

 Некоторые специальные символы следует всегда задавать заключёнными в фигурные скобки.

Перечень таких символов:
{+} {^} {%} {~} {(} {)} {[} {]} {{} {}}

Задание неотображаемых символов и специальных клавиш:
<Backspace> - {BACKSPACE} или {BS} или {BKSP}
<Break> - {BREAK}
<Caps Lock> - {CAPSLOCK}
<Delete> - {DELETE} или {DEL}
<End> - {END}
<Enter> - {ENTER} или ~
<Esc> - {ESC}
<Home> - {HOME}
<Insert> - {INSERT} или {INS}
<Num Lock> - {NUMLOCK}
<Page Down> - {PGDN}
<Page Up> - {PGUP}
<Print Screen> - {PRTSC}
<Scroll Lock> - {SCROLLLOCK}
<Tab> - {TAB}
<Up Arrow> - {UP}
<Left Arrow> - {LEFT}
<Down Arrow> - {DOWN}
<Right Arrow> - {RIGHT}
<F1> - {F1}
<F2> - {F2} и т.д.
<Shift> - +
<Ctrl> - ^
<Alt> - %
Можно использовать скобки. Например, нажатие клавиш <G> и <S> при нажатом <Shift> следует записывать как "+(GS)". Запись "+GS" приведёт к нажатию клавиши <G> при нажатом <Shift>, а затем клавиши <S> уже без <Shift>.
Задание нескольких нажатий: "{LEFT 42}" приведёт к нажатию клавиши <Left Arrow> 42 раза подряд, "{h 10}" приведёт к нажатию клавиши <h> 10 раз подряд.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Епрст (Ёпрст) 16.03.15 18:12
Чего уж там, показывай в каждой статье по 1 методу объекта
Windows Script Host

Так то [:]|||||||||||||||||||||||||||||||||||||||||||[:]

http://www.script-coding.com/WSH.html
Swetlana; artbear; help1Ckr; gigapevt; fishca; dour-dead; theshadowco; daMaster; +8 Ответить
2. Епрст (Ёпрст) 16.03.15 18:15
И это, копирять текст с чужих сайтов тоже, моветон
4. Никита Долгих (Nik_1c_bitrix) 16.03.15 20:34
(3) Ёпрст, данная статья никому не нужна и бесполезна? Когда мне нужно было нажать на клавишу программно, я не нашел простой и понятной инструкции. Я думаю, любой программист, который не сталкивался со скриптами не будет писать в поиске: "как нажать на клавишу используя Windows Script Host". Он напишет понятно для себя, найдет быстро ответ. На мой взгляд, именно для этого и нужен инфостарт. Или по вашему простыни типа http://infostart.ru/public/165702/ более более полезны? Ну, в общем оставим это на суд общественности...
bursanb; Rustig; alex_4x; monkbest; +4 Ответить
5. Илья Вильчик (TreeDogNight) 18.03.15 21:36
Исполнение сочитания клавиш Ctrl+F работает неккоректно( После 1го вызова, 2й раз вызываться не хочет
6. Александр Полтава (Патриот) 19.03.15 16:01
(0) +
но источник стоило указать
7. DENIS SUKHOV (miap) 20.03.15 09:48
Этот метод работает только в Windows. В Linux работать не будет в лучшем случае, в худшем - ошибка. В веб-интерфейсе не проверял.
8. mozz mozz (mozz) 25.03.15 15:15
Набросал простенький пример для обычных и УФ. Файл приложил.
Прикрепленные файлы:
СендКей.epf
9. г. Казань Рустем Гумеров (Rustig) 26.03.15 08:51
(0) под какую задачу писалось решение? напишите развернуто, пожалуйста
10. Никита Долгих (Nik_1c_bitrix) 30.03.15 12:03
(9) Rustig, условия: пользователю нужно много и часто производить поиск по полю справочника в динамическом списке. условия поиска то вводятся то удаляются, пользователь активно выделяет разные колонки и строки. Необходимо: чтобы каждый раз при поиске система активизировала первую строку в первой колонке. Проблема в основном происходит тогда, когда динамический список пуст, а потом опять заполнен.
Вообще, при работе с динамическим список решать задачу выделения конкретной строки при помощи "ТекушаяСтрока" трудно при условии постоянного перезаполнения ДС, хотя возможно.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа