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

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 - камер, видео, фото

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

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

20400 руб.

31.05.2023    3805    2    1    

3

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

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

Внешняя обработка получения изображения с веб-камеры с возможностью его кадрирования по произвольно выделенной области. Использует собственную внешнюю компоненту на основе библиотеки AForge. Содержит примеры интерактивного взаимодействия с полем HTML.

20.03.2024    326    1    AndSem    1    

3

Прямая печать на принтерах TSC из 1С

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

Прямая печать на принтерах TSC из 1С при вызове с сервера позволяет печатать из тонкого клиента, мобильного клиента и веб-клиента. Потребуется установка драйвера и библиотеки для отправки команд на этот драйвер.

1 стартмани

19.02.2024    534    3    realslavyan    0    

5

HotKeys на Python для 1С

Периферийные устройства Конфигурации 1cv8 Бесплатно (free)

Недавно прочитал статью на Инфостарте о KeyPad и вначале захотел себе такой, но через какое-то время я понял, что дополнительная даже маленькая клавиатура занимает место, и нужно все время держать ее под рукой. Это все создает дополнительные неудобства.

20.12.2023    4938    John_d    25    

70

Очистка очереди печати конкретного принтера

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

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

1 стартмани

07.11.2023    1257    1    vsnazarov    1    

26

Печать этикеток на DYMO LabelManager 280 через DYMO Connect Web Service

Периферийные устройства WEB-интеграция Этикетки, ценники Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

На сайте производителя принтера DYMO LabelManager 280 вместе с драйвером поставляется пакет DYMO Connect, который предлагает функционал вёрстки этикеток в фирменном формате и отправки их напрямую на принтер. Так же в этом пакете есть веб-сервис для взаимодействия с принтером через HTTP-запросы, о котором и пойдет речь в этой статье.

29.08.2023    1460    GeraltSnow    0    

3

Второй монитор в качестве дисплея покупателя

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

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

1 стартмани

02.02.2023    3192    25    windsurf    4    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Ёпрст 1063 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. Ёпрст 1063 16.03.15 18:15 Сейчас в теме
И это, копирять текст с чужих сайтов тоже, моветон
copperfox; Painted; +2 Ответить
4. Nik_1c_bitrix 192 16.03.15 20:34 Сейчас в теме
(3) Ёпрст, данная статья никому не нужна и бесполезна? Когда мне нужно было нажать на клавишу программно, я не нашел простой и понятной инструкции. Я думаю, любой программист, который не сталкивался со скриптами не будет писать в поиске: "как нажать на клавишу используя Windows Script Host". Он напишет понятно для себя, найдет быстро ответ. На мой взгляд, именно для этого и нужен инфостарт. Или по вашему простыни типа http://infostart.ru/public/165702/ более более полезны? Ну, в общем оставим это на суд общественности...
user1835100; Йожкин Кот; EnsTaiN; savauu; CyberCerber; Merkalov; user942338; user826590; Vidocq05; bursanb; RustIG; alex_4x; monkbest; +13 Ответить
13. user826590 20.09.17 07:44 Сейчас в теме
(4)Данная статья очень полезная.

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

Очень люблю разные статьи на интересующих многих темы и облегчающие жизнь разнообразные обработки.
5. TreeDogNight 22 18.03.15 21:36 Сейчас в теме
Исполнение сочитания клавиш Ctrl+F работает неккоректно( После 1го вызова, 2й раз вызываться не хочет
6. Патриот 450 19.03.15 16:01 Сейчас в теме
(0) +
но источник стоило указать
7. miap 20.03.15 09:48 Сейчас в теме
Этот метод работает только в Windows. В Linux работать не будет в лучшем случае, в худшем - ошибка. В веб-интерфейсе не проверял.
8. mozz 148 25.03.15 15:15 Сейчас в теме
Набросал простенький пример для обычных и УФ. Файл приложил.
Прикрепленные файлы:
СендКей.epf
9. RustIG 1382 26.03.15 08:51 Сейчас в теме
(0) под какую задачу писалось решение? напишите развернуто, пожалуйста
10. Nik_1c_bitrix 192 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 123 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 192 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 192 17.06.18 10:44 Сейчас в теме
(19) {NUMLOCK +} - вот так пробовали?
RedLunx@mail.ru; +1 Ответить
21. burni4 87 22.12.18 20:42 Сейчас в теме
а прокрутку колеса как сделать?)
22. Nik_1c_bitrix 192 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 87 27.12.18 13:21 Сейчас в теме
(22) просто понадобилось 1 "пользователю" что бы менялся масштаб отображения в табличном документе, и необходимо нажатие (CTRL + прокрутка мыши вверх/вниз)
24. Nik_1c_bitrix 192 27.12.18 14:26 Сейчас в теме
(23)
у табдока есть свойство масштаб, которое можно программно менять
25. burni4 87 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) - "-" на нумпаде
user1707144; k992007; bearman; advard; +4 Ответить
28. advard 15 17.01.22 18:34 Сейчас в теме
29. Dermidont 11 19.12.22 10:37 Сейчас в теме
Ништяк, мужики, это спасло отца русской демократии. Автору респект.
Оставьте свое сообщение