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

12.10.16

Интеграция - Периферийные устройства

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

Для программного нажатия на клавишу необходимо использовать объект 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 раз подряд.

Программно нажать клавишу

См. также

Распознавание документов и образов Периферийные устройства Программист Автомобили, автосервисы Россия Платные (руб)

Программа считывает кадры с ip-камер (http - запрос к камере), видео, фото (источники кадров (нет ограничения на их количество) настраивается в конфигурационном файле), находит и распознает номера автомашин и сохраняет в базу db, с сохранением фото номера и автомашины, а также времени детекции.

20400 руб.

31.05.2023    5375    4    4    

8

Периферийные устройства Системный администратор Программист Пользователь Стажер Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Предлагаются обработки, с помощью которой вы сможете протестировать ваш принтер чеков через БПО версий 2.1 и 3.2.

4 стартмани

18.02.2025    529    3    aximo    0    

3

Периферийные устройства Программист Платформа 1С v8.3 1С:Управление производственным предприятием Россия Абонемент ($m)

Обработка позволяет получить статус текущего принтера. Может быть полезна для разработчиков, например, когда необходимо получить принтеры и отправить документ на печать на активный принтер, или необходимо предупредить пользователя, что документ не может быть распечатан, так как текущий принтер не активный.

1 стартмани

31.12.2024    519    0    user821472    0    

2

Периферийные устройства Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 Россия Абонемент ($m)

Пример работы для разработчика с оборудованием принтер чеков в рамках новейшей библиотеки подключаемого оборудования.

10 стартмани

14.11.2024    999    6    aximo    0    

3

Периферийные устройства Системный администратор Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Абонемент ($m)

Простая в использовании обработка https://infostart.ru/1c/tools/1001819/ в целом решает поставленную задачу, но имеет явный недостаток - взаимодействует только с принтерами, подключенными к серверу. Доработанная версия позволяет работать как с принтерами на клиенте, так и на сервере

1 стартмани

30.08.2024    587    4    Sergey1CSpb    0    

4

Периферийные устройства Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Розничная и сетевая торговля (FMCG) Россия Абонемент ($m)

Расширение для вывода информации для покупателя из РМК на второй монитор. Также реализован вывод картинок из каталога в левую часть экрана покупателя. Разработано для УТ 11.5, УНФ 3.0.6 и 3.0.9.

1 стартмани

12.08.2024    1842    38    Rastopchinss    19    

6

Периферийные устройства Пользователь Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Абонемент ($m)

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

1 стартмани

02.08.2024    945    1    AlOkt    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Ёпрст 1067 16.03.15 18:12 Сейчас в теме
Чего уж там, показывай в каждой статье по 1 методу объекта
Windows Script Host

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

http://www.script-coding.com/WSH.html
pm74; корум; Swetlana; artbear; help1Ckr; gigapevt; fishca; dour-dead; theshadowco; daMaster; +10 Ответить
2. Ёпрст 1067 16.03.15 18:15 Сейчас в теме
И это, копирять текст с чужих сайтов тоже, моветон
copperfox; Painted; +2 Ответить
4. Nik_1c_bitrix 193 16.03.15 20:34 Сейчас в теме
(3) Ёпрст, данная статья никому не нужна и бесполезна? Когда мне нужно было нажать на клавишу программно, я не нашел простой и понятной инструкции. Я думаю, любой программист, который не сталкивался со скриптами не будет писать в поиске: "как нажать на клавишу используя Windows Script Host". Он напишет понятно для себя, найдет быстро ответ. На мой взгляд, именно для этого и нужен инфостарт. Или по вашему простыни типа http://infostart.ru/public/165702/ более более полезны? Ну, в общем оставим это на суд общественности...
anton-1981@yandex.ru; user1835100; Йожкин Кот; EnsTaiN; savauu; CyberCerber; Merkalov; user942338; user826590; Vidocq05; bursanb; RustIG; alex_4x; monkbest; +14 Ответить
13. user826590 20.09.17 07:44 Сейчас в теме
(4)Данная статья очень полезная.

Побольше бы таких разработчиков, может и жить стало бы легче.

Очень люблю разные статьи на интересующих многих темы и облегчающие жизнь разнообразные обработки.
5. TreeDogNight 22 18.03.15 21:36 Сейчас в теме
Исполнение сочитания клавиш Ctrl+F работает неккоректно( После 1го вызова, 2й раз вызываться не хочет
6. Патриот 458 19.03.15 16:01 Сейчас в теме
(0) +
но источник стоило указать
7. miap 20.03.15 09:48 Сейчас в теме
Этот метод работает только в Windows. В Linux работать не будет в лучшем случае, в худшем - ошибка. В веб-интерфейсе не проверял.
8. mozz 149 25.03.15 15:15 Сейчас в теме
Набросал простенький пример для обычных и УФ. Файл приложил.
Прикрепленные файлы:
СендКей.epf
9. RustIG 1837 26.03.15 08:51 Сейчас в теме
(0) под какую задачу писалось решение? напишите развернуто, пожалуйста
10. Nik_1c_bitrix 193 30.03.15 12:03 Сейчас в теме
(9) Rustig, условия: пользователю нужно много и часто производить поиск по полю справочника в динамическом списке. условия поиска то вводятся то удаляются, пользователь активно выделяет разные колонки и строки. Необходимо: чтобы каждый раз при поиске система активизировала первую строку в первой колонке. Проблема в основном происходит тогда, когда динамический список пуст, а потом опять заполнен.
Вообще, при работе с динамическим список решать задачу выделения конкретной строки при помощи "ТекушаяСтрока" трудно при условии постоянного перезаполнения ДС, хотя возможно.
11. ISP 17.05.17 08:32 Сейчас в теме
как нажать shift+alt+R (восстановить положение окна)
14. onikts 21.09.17 13:11 Сейчас в теме
(11)
как нажать shift+alt+R (восстановить положение окна)


WSHShell=Новый COMObject("WScript.Shell");;
WSHShell.SendKeys("%+( R )");

//Пробелы в скобках надо убрать.
//здесь они нужны, что бы правильно отображался символ R
12. dutlovva 126 20.09.17 06:28 Сейчас в теме
15. onikts 21.09.17 13:12 Сейчас в теме
Процедура ПриОткрытии()

WSHShell=Новый COMObject("WScript.Shell");;
WSHShell.SendKeys("%+®");
16. igormiro 714 28.12.17 15:15 Сейчас в теме
Это хорошо, но не работает на Веб клиенте.
26. Nik_1c_bitrix 193 11.03.21 21:43 Сейчас в теме
(16)В браузере, на линуксе, на IOS - не работает, только Windows
17. пользователь 28.12.17 15:22
Сообщение было скрыто модератором.
...
18. пользователь 28.12.17 20:49
Сообщение было скрыто модератором.
...
19. Reserv1st 14.06.18 17:05 Сейчас в теме
как будет кнопка "num+" ?
20. Nik_1c_bitrix 193 17.06.18 10:44 Сейчас в теме
(19) {NUMLOCK +} - вот так пробовали?
RedLunx@mail.ru; +1 Ответить
21. burni4 89 22.12.18 20:42 Сейчас в теме
а прокрутку колеса как сделать?)
22. Nik_1c_bitrix 193 27.12.18 12:43 Сейчас в теме
(21)
На колесо мыши не вижу методов, может стрелка вниз/вверх или PgUp/PgDn
Движение мыши и нажатие кнопок:

• {Move x, y} - переместите мышь в (x, y)

• {ClickLeft x, y} - переместите мышь к (x, y) и нажмите левую кнопку. (Это так же, как {DownLeft x, y} {UpLeft}.)

• {DoubleClickLeft x, y} - переместите мышь в (x, y) и нажмите левую кнопку. (Это НЕ то же самое, что {ClickLeft x, y} {ClickLeft}.)

• {DownLeft x, y} - переместите мышь в (x, y) и нажмите левую кнопку вниз.

• {UpLeft x, y} - переместите мышь в (x, y) и отпустите левую кнопку.

• одноименные клавиши для средней и правой кнопок мыши.

Значения x, y - это расположение пикселей экрана (0,0) в правом верхнем углу. Во всех случаях x, y является необязательным. Если опущено, используется предыдущая позиция мыши.
23. burni4 89 27.12.18 13:21 Сейчас в теме
(22) просто понадобилось 1 "пользователю" что бы менялся масштаб отображения в табличном документе, и необходимо нажатие (CTRL + прокрутка мыши вверх/вниз)
24. Nik_1c_bitrix 193 27.12.18 14:26 Сейчас в теме
(23)
у табдока есть свойство масштаб, которое можно программно менять
25. burni4 89 27.12.18 14:45 Сейчас в теме
(24) это масштаб для вывода на печать, а нужно именно для отображения во время просмотра
27. Amigo_0 06.08.21 14:58 Сейчас в теме
Всем привет из нового десятилетия))
Если вдруг кому-то пригодится. Программно развернуть / свернуть динамический список с группировкой

Работает на иерархическом списке:

Развернуть:
ОбъектShell = Новый COMОбъект("Wscript.Shell");
ОбъектShell.SendKeys("^+" + Символ(107)); // Символ(107) - "+" на нумпаде

Свернуть:
ОбъектShell = Новый COMОбъект("Wscript.Shell");
ОбъектShell.SendKeys("^+" + Символ(109)); // Символ(109) - "-" на нумпаде
snay; user1707144; k992007; bearman; advard; +5 Ответить
28. advard 15 17.01.22 18:34 Сейчас в теме
29. Dermidont 11 19.12.22 10:37 Сейчас в теме
Ништяк, мужики, это спасло отца русской демократии. Автору респект.
Оставьте свое сообщение