Как имитировать нажатие клавиши на клавиатуре bat
Недавно появился у меня ноутбук Samsung (350e5c-s06ru). Настроил я его для работы, установил ОС, драйвера и необходимые программы, все в прядке. Но заметил особенность: при подключении мыши не отключается тачпад. Довольно неудобно, на своем основном рабочем ноутбуке Acer есть возможность включить данную опцию, а вот на данном самсунге не нашел. Ну что ж, если нет, то может, сделать самостоятельно? Тем более, задача выглядит несложной: создать программу, которая при запуске будет нажимать две клавиши: Fn + F5 – это активация/деактивация тачпада. Программист я или где? Однако, задача оказалась совсем не такой простой…
Итак, первое, что пришло в голову – это создать простенький скрипт vbs, поставить его в автозагрузку и ..и все. Сказано – сделано.
Создаем новый текстовый документ, называем его, к примеру, sc.vbs и заполняем следующим текстом:
Теперь данный файлик можно прописать в автозагрузке, и он будет имитировать нажатие «CTRL+ F5» на клавиатуре. Метод SendKeys в VBScript используется для отправки нажатий клавиш в текущее активное окно, как если бы они набирались с клавиатуры.
Для отправки нескольких символов их объединяют в одну строку. Например, для отправки A, B и C команда будет object.SendKeys "ABC".
Знак плюса «+», «кавычки», знак процента «%», тильда «
» и круглые скобки «()» имеют особые значения и должны быть заключены в фигурные скобки «<>". Квадратные скобки "[]" также должны быть заключены в фигурные скобки, хотя они не имеют особого значения. Чтобы указать символы скобок, используйте «» и «<>>».
Есть специальная таблица символов, которые не могут быть непосредственно представлены символом клавиатуры для использования одного из них необходимо указать соответствующий код. Например, Home – .
Стоп-стоп, скажите вы – нам же нужна клавиша Fn - где она? И правильно спросите. А я вам отвечу, что её нет. Вот так просто нет. Fn – это особая клавиша модификатор и с помощью VBScript нажать её, увы, не получится.
Что же делать?
мне нужно нажать кнопку "Сохранить" в приложении Adobe Air под названием Arthropod. Я могу запустить приложение в файле bat с помощью этого:
Как только он появляется, на пользовательском интерфейсе есть кнопка сохранения. Как я могу щелкнуть по нему файлом bat?
который показал, как имитировать клики в меню "Файл" и другие вкладки в MS Word, но как это делается на любой другой кнопке?
P. S. Текст на кнопке "Сохранить" это единственный уникальный идентификатор, я могу подумать на эту кнопку. Есть ли что-то пакетное, где я могу сказать что-то вроде (псевдо-код):
можно использовать AutoIt для этого. Вы можете сгенерировать скрипт, который нажмет на кнопку "Сохранить" и вызовет сгенерированный EXE-файл из пакетного файла.
нет собственного способа сделать это чисто.
но вы можете использовать VBS для имитации нажатия клавиш, если хотите, что-то похожее на AutoIT, но нигде не столь гибкое. С положительной стороны, вам не нужно загружать VBS. Он был включен в каждую версию Windows начиная с 95.
я включаю пример, который запускает notepad.exe , затем введите в него следующее:
.
Следующая строка называется LaunchNotepad.bat :
.
Ниже приводится содержание LaunchNotepad.vbs :
обратите внимание, что если есть один или несколько экземпляров Notepad.exe уже открыт, и для открытия Блокнота требуется более 5 секунд, приведенный выше код может выбрать последний активный экземпляр блокнота и ввести его.
для получения VBS код для работы, как вы хотите, вам нужно научиться перемещаться по Adobe Air с помощью клавиатуры. Обычно либо вкладки и / или клавиш со стрелками будет достаточно. Иногда вам может потребоваться использовать ALT ключ для перемещения в меню.
кроме того, вы можете фактически использовать ряд команд клавиатуры, таких как ALT + F S ENTER , или даже сочетание клавиш, как CTRL + S .
Winbatch-это еще одна программа, которая может отправлять нажатия клавиш, но в отличие от AutoIt я не считаю, что это бесплатно.
В Windows Forms предоставляется несколько возможностей для программной имитации ввода данных с клавиатуры. В этой статье представлены общие сведения об этих возможностях.
Использование SendKeys
Windows Forms предоставляет класс System.Windows.Forms.SendKeys для отправки нажатий клавиш в активное приложение. Существует два метода отправки в приложение нажатий клавиш: SendKeys.Send и SendKeys.SendWait. Разница между двумя методами заключается в том, что при отправке нажатия клавиши SendWait блокирует текущий поток, ожидая ответа, а Send — нет. Дополнительные сведения о методе SendWait см. в разделе Отправка нажатия клавиши в другое приложение.
Если приложение предназначено для международного использования с различными клавиатурами, применение метода SendKeys.Send может иметь непредсказуемые результаты и его следует избегать.
В фоновом режиме SendKeys использует более раннюю реализацию Windows для отправки ввода, что может привести к сбою в современных версиях Windows, где предполагается, что приложение не выполняется с правами администратора. Если старая реализация завершается сбоем, код автоматически пытается выполнить новую реализацию Windows для отправки ввода. Кроме того, когда класс SendKeys использует новую реализацию, метод SendWait больше не блокирует текущий поток при отправке нажатий клавиш в другое приложение.
Если необходимо обеспечить согласованное поведение приложения независимо от операционной системы, можно заставить класс SendKeys использовать новую реализацию, добавив указанный ниже параметр приложения в файл app.config.
Для принудительного использования классом SendKeys только предыдущей реализации задайте значение "JournalHook" .
Отправка нажатия клавиши в то же приложение
Вызовите метод SendKeys.Send или SendKeys.SendWait класса SendKeys . Указанные нажатия клавиш будут получены активным элементом управления приложения.
В следующем примере кода метод Send используется для имитации одновременного нажатия клавиш ALT и ВНИЗ . Эти нажатия клавиш приводят к тому, что элемент управления ComboBox отображает свой раскрывающийся список. В этом примере предполагается наличие Form с Button и ComboBox.
Отправка нажатия клавиши в другое приложение
В следующем примере кода метод Send используется для имитации нажатия клавиш в приложении "Calculator" (Калькулятор) в Windows 10. Сначала он ищет окно приложения с заголовком Calculator , а затем активирует его. После активации окна отправляются нажатия клавиш для вычисления выражения "10 плюс 10".
Использование методов OnEventName
Самый простой способ имитации событий клавиатуры — вызов метода для объекта, который вызывает событие. У большинства событий есть соответствующий метод, который их вызывает, с шаблонным именем, начинающимся с On , за которым следует EventName , например OnKeyPress . Этот вариант возможен только в пределах пользовательских элементов управления или форм, так как эти методы защищены и недоступны вне контекста элемента управления или формы.
Эти защищенные методы можно использовать для имитации событий клавиатуры.
- OnKeyDown
- OnKeyPress
- OnKeyUp
Имитация нажатия клавиш на клавиатуре в VBA Excel с помощью оператора SendKeys, в том числе эмуляция нажатия сочетаний клавиш. Синтаксис, коды, примеры.
Синтаксис оператора SendKeys
Параметры оператора SendKeys:
Параметр | Описание |
---|---|
string | Обязательный параметр. Строковое выражение, возвращающее код клавиши (сочетания клавиш). |
wait | Необязательный параметр. Логическое значение, определяющее режим ожидания. False (по умолчанию) – контроль процедуре возвращается сразу после отправки кода клавиш. True – перед возвратом контроля процедуре коды клавиш обрабатываются. |
Имитация нажатия клавиш
Эмуляция нажатия алфавитно-цифровых клавиш из кода VBA Excel, не представляющих спецсимволы: параметру string задается значение символа в прямых кавычках, например, "А" , "Абвгд" , "356" .
Имитация нажатия клавиш, представляющих спецсимволы: параметру string задается значение символа в фигурных скобках, например, "" , "<)>" .
Спецсимволы, которые следует заключать в фигурные скобки: плюс + , возведение в степень ^ , знак процента % , тильда
, круглые скобки () , квадратные скобки [] и сами фигурные скобки <> . Символы фигурных скобок указываются так: "" и "<>>" .
Для эмуляции нажатия специальных клавиш, включая функциональные и клавиши управления курсором, используются специальные коды, заключенные в фигурные скобки.
Фигурные скобки используются и для имитации нескольких нажатий одной клавиши из кода VBA Excel. В этом случае параметр string записывается в виде , где число – количество нажатий. Например: "" .
Коды специальных клавиш
Клавиша | Код |
---|---|
BACKSPACE | или |
BREAK | |
CAPS LOCK | |
DEL или DELETE | или |
СТРЕЛКА ВНИЗ | |
END | |
ENTER | или |
Эмуляция сочетаний клавиш
Чтобы указать сочетание клавиш с SHIFT, CTRL, ALT или их комбинацией, необходимо добавить перед кодом клавиши один или несколько следующих кодов:
Клавиша | Код |
---|---|
SHIFT | + |
CTRL | ^ |
ALT | % |
Чтобы указать, что клавиши SHIFT, CTRL и ALT в любом сочетании необходимо удерживать, нажимая несколько других клавиш, заключите код для последних клавиш в круглые скобки. Например, чтобы указать, что нужно удерживать клавишу SHIFT, нажимая клавиши а, б, в, г, д, введите "+(абвгд)" .
Важное примечание:Применение оператора SendKeys может приводить к автоматическому отключению* правого цифрового блока клавиатуры (переключает на стрелки и специальные клавиши). Чтобы вернуть исходную функциональность цифрового блока, необходимо в конце процедуры применить имитацию нажатия клавиши «NUM LOCK»: SendKeys "" . К сожалению, работает не всегда.
* Обнаружено в Windows 8.1 (Excel 2016).
Примеры с оператором SendKeys
Коды примеров запускаются через кнопку на рабочем листе, иначе имитация нажатия клавиш произойдет в окне редактора VBA с записью символов внутри процедуры. Попробуйте, ради интереса, запустить код первого примера из редактора VBA.
Пример 1
Заполняем первые три ячейки столбца «A» различными значениями, имитируя нажатия клавиш из кода VBA Excel:
Читайте также: