Windows скрипт нажатие клавиши

Windows скрипт нажатие клавиши

Недавно появился у меня ноутбук Samsung (350e5c-s06ru). Настроил я его для работы, установил ОС, драйвера и необходимые программы, все в прядке. Но заметил особенность: при подключении мыши не отключается тачпад. Довольно неудобно, на своем основном рабочем ноутбуке Acer есть возможность включить данную опцию, а вот на данном самсунге не нашел. Ну что ж, если нет, то может, сделать самостоятельно? Тем более, задача выглядит несложной: создать программу, которая при запуске будет нажимать две клавиши: Fn + F5 – это активация/деактивация тачпада. Программист я или где? Однако, задача оказалась совсем не такой простой…

Итак, первое, что пришло в голову – это создать простенький скрипт vbs, поставить его в автозагрузку и ..и все. Сказано – сделано.

Создаем новый текстовый документ, называем его, к примеру, sc.vbs и заполняем следующим текстом:

Теперь данный файлик можно прописать в автозагрузке, и он будет имитировать нажатие «CTRL+ F5» на клавиатуре. Метод SendKeys в VBScript используется для отправки нажатий клавиш в текущее активное окно, как если бы они набирались с клавиатуры.

Одиночные буквенно-цифровые нажатия клавиш можно просто указать, используя строковое представление требуемого символа. Например, чтобы отправить букву S, команда будет object.SendKeys «S».

Для отправки нескольких символов их объединяют в одну строку. Например, для отправки A, B и C команда будет object.SendKeys «ABC».

Знак плюса «+», «кавычки», знак процента «%», тильда «

» и круглые скобки «()» имеют особые значения и должны быть заключены в фигурные скобки «<>«. Квадратные скобки «[]» также должны быть заключены в фигурные скобки, хотя они не имеют особого значения. Чтобы указать символы скобок, используйте «<<>» и «<>>».

Есть специальная таблица символов, которые не могут быть непосредственно представлены символом клавиатуры для использования одного из них необходимо указать соответствующий код. Например, Home – .

Стоп-стоп, скажите вы – нам же нужна клавиша Fn — где она? И правильно спросите. А я вам отвечу, что её нет. Вот так просто нет. Fn – это особая клавиша модификатор и с помощью VBScript нажать её, увы, не получится.

Есть два варианта. Первый – это самый простой: посмотреть в программах и/или драйверах для самсунга (этой модели) и попробовать найти подходящую. Второй – это все же попробовать эмулировать нажатие данной комбинации клавиш, но на более низком уровне. Не скриптовом языке программирования, а, к примеру, С# .NET. Этим мы и займемся, но уже в следующих статьях.


Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

заметки, личное, VBScript

Оператор SendKeys SendKeys statement

Отправляет один или несколько кодов клавиш в активное окно так, если бы клавиши были нажаты на клавиатуре. Sends one or more keystrokes to the active window as if typed at the keyboard.

Синтаксис Syntax

SendKeys string, [ wait ] SendKeys string, [ wait ]

Синтаксис оператора SendKeys содержит следующие именованные аргументы: The SendKeys statement syntax has these named arguments:

Часть Part Описание Description
строка string Обязательный аргумент. Required. Строковое выражение, определяющие отправляемые коды клавиш. String expression specifying the keystrokes to send.
wait wait Не обязательно указывать. Optional. Логическое значение определяющее режим ожидания. Boolean value specifying the wait mode. Если значение равно False (по умолчанию), контроль возвращается процедуре сразу после отправки кода клавиш. If False (default), control is returned to the procedure immediately after the keys are sent. Если значение равно True, коды клавиш необходимо обработать перед возвратом контроля процедуре. If True, keystrokes must be processed before control is returned to the procedure.

Примечания Remarks

Каждая клавиша представлена одним или несколькими символами. Each key is represented by one or more characters. Чтобы указать один символ клавиатуры, используйте сам символ. To specify a single keyboard character, use the character itself. Например, чтобы представить букву A, используйте «A» для аргумента string. For example, to represent the letter A, use «A» for string. Чтобы представить несколько символов, добавьте дополнительный символ к предыдущему. To represent more than one character, append each additional character to the one preceding it. Чтобы представить буквы A, B и C, используйте «ABC» для аргумента string. To represent the letters A, B, and C, use «ABC» for string.

Знак плюс (+), символ крышки (^), знак процента (%), тильда (

), and parentheses ( ) have special meanings to SendKeys. Чтобы указать один из этих символов, заключите их в фигурные скобки ( <> ). To specify one of these characters, enclose it within braces ( <> ). Например, чтобы указать знак плюса, используйте строку <+>. For example, to specify the plus sign, use <+>.

Квадратные скобки ([ ]) не обладают специальным значением для SendKeys, но их также нужно заключать в фигурные скобки. Brackets ([ ]) have no special meaning to SendKeys, but you must enclose them in braces. В других приложениях квадратные скобки обладают специальным значением, которое может быть важным при динамическом обмене данными (DDE). In other applications, brackets do have a special meaning that may be significant when dynamic data exchange (DDE) occurs. Чтобы указать символы фигурных скобок, используйте <<>и <>> . To specify brace characters, use <<>and <>> .

Чтобы задать символы, которые не отображаются при нажатии клавиш ВВОД или TAB, а также клавиш, представляющих действия, а не символы, используйте коды, представленные в таблице ниже. To specify characters that aren’t displayed when you press a key, such as ENTER or TAB, and keys that represent actions rather than characters, use the codes in the following table:

Ключ Key Код Code
BACKSPACE BACKSPACE , или , , or
BREAK BREAK
CAPS LOCK CAPS LOCK
DEL или DELETE DEL or DELETE или or
СТРЕЛКА ВНИЗ DOWN ARROW
END END
ВВОД ENTER или
ESC ESC
HELP HELP
HOME HOME
INS или INSERT INS or INSERT или or
СТРЕЛКА ВЛЕВО LEFT ARROW
NUM LOCK NUM LOCK
PAGE DOWN PAGE DOWN
PAGE UP PAGE UP
PRINT SCREEN PRINT SCREEN
СТРЕЛКА ВПРАВО RIGHT ARROW
SCROLL LOCK SCROLL LOCK
TAB TAB
СТРЕЛКА ВВЕРХ UP ARROW
F1 F1
F2 F2
F3 F3
F4 F4
F5 F5
F6 F6
F7 F7
F8 F8
F9 F9
F10 F10
F11 F11
F12 F12
F13 F13
F14 F14
F15 F15
F16 F16

Чтобы указать сочетание клавиш с SHIFT, CTRL и ALT, добавьте перед кодом клавиши один или несколько следующих кодов: To specify keys combined with any combination of the SHIFT, CTRL, and ALT keys, precede the key code with one or more of the following codes:

Ключ Key Код Code
SHIFT SHIFT +
CTRL CTRL ^
ALT ALT %

Чтобы указать, что клавиши SHIFT, CTRL и ALT в любом сочетании нужно удерживать, нажимая несколько других клавиш, заключите код для последних клавиш в скобки. To specify that any combination of SHIFT, CTRL, and ALT should be held down while several other keys are pressed, enclose the code for those keys in parentheses. Например, чтобы указать, что нужно удерживать клавишу SHIFT, нажимая клавиши E и C, введите +(EC) . For example, to specify to hold down SHIFT while E and C are pressed, use +(EC) .

Для указания повторяющихся клавиш используйте форму . To specify repeating keys, use the form . Необходимо добавить пробел между key и number . You must put a space between key and number . Например, означает нажатие клавиши СТРЕЛКА ВЛЕВО 42 раза, а означает нажатие клавиши H 10 раз. For example, means press the LEFT ARROW key 42 times; means press H 10 times.

Невозможно использовать SendKeys для отправки кодов клавиш в приложение, не предназначенное для работы в операционных системах Microsoft Windows или Mac OS. You can’t use SendKeys to send keystrokes to an application that is not designed to run in Microsoft Windows or Macintosh. Sendkeys также не может отправлять код клавиши PRINT SCREEN в приложения. Sendkeys also can’t send the PRINT SCREEN key to any application.

Пример Example

В этом примере функция Shell используется для запуска приложения «Калькулятор Windows». This example uses the Shell function to run the Calculator application included with Microsoft Windows. Здесь оператор SendKeys отправляет коды клавиш для добавления некоторых чисел и закрытия калькулятора. It uses the SendKeys statement to send keystrokes to add some numbers and then quit the Calculator. Чтобы воспользоваться примером, вставьте его в процедуру и выполните ее. (To see the example, paste it into a procedure, and then run the procedure. Так как метод AppActivate активирует окно калькулятора, вы не можете выполнять код пошагово. Because AppActivate changes the focus to the Calculator application, you can’t single step through the code.)

На компьютере с Mac OS используйте приложение для Mac OS, которое принимает данные от клавиатуры, а не «Калькулятор Windows». On the Macintosh, use a Macintosh application that accepts keyboard input instead of the Windows Calculator.

См. также See also

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Объект WScript.Shell метод SendKeys — имитация нажатия клавиш

Всем привет, с вами автор блога scriptcoding.ru. Сегодня мы затронем такую тему как имитация нажатия клавиш программными средствами с помощью метода SendKeys класса WScript.Shell.

SendKeys – имитация нажатия клавиш – теоретические основы

Метод SendKeys, который позволяет имитировать нажатие клавиш и их комбинаций. Метод SendKeys объекта WScript.Shell является по своей природе слепым, так как он не позволяет указать то приложение, которому назначен ввод с клавиатуры, то есть, если мы сделаем попытку имитировать ввод фразы «привет мир», то она будет обрабатываться лишь тому приложениею, которое в данный момент являются активным. Если активным будет текстовый редактор – то в нем отобразится заданный текст, если антивирусная программа – то, скорее всего, никакой активности не произойдет.

Что бы использовать функцию Wscript SendKeys, нужно объявить переменную, которая будет хранить ссылку на объект WScript.Shell, а уже через эту переменную можно будет вызвать SendKeys.

Общая логика работы:

SendKeys (строка) – Видим, что мы в качестве аргумента должны передать строковое выражение, которое будет хранить имя клавиши или сочетание.

Что бы ввести просто символ или набор символов, мы всего-навсего прописываем их как строку, например: SendKeys(«привет мир»). Для ввода специальных клавиш (например, Enter, стрелки, функциональные клавиши и так далее), их название нужно заключить в фигурные скобки <>.

Ниже приведен список функциональных клавиш и их обозначение:

  • BACKSPACE —, или
  • BREAK —
  • CAPS LOCK —
  • DEL или DELETE — или
  • СТРЕЛКА ВНИЗ —
  • END —
  • ENTER —или
  • ESC —
  • HELP —
  • HOME —
  • INS или INSERT — или
  • СТРЕЛКА ВЛЕВО —
  • NUM LOCK —
  • PAGE DOWN —
  • PAGE UP —
  • PRINT SCREEN —
  • СТРЕЛКА ВПРАВО —
  • SCROLL LOCK —
  • TAB —
  • СТРЕЛКА ВВЕРХ —
  • F1-
  • F2 —
  • F3 —
  • F4 —
  • F5 —
  • F6 —
  • F7 —

    Если нужно указать сочетание специальных клавиш, то следует использовать следующие коды:

    Также стоит помнить, что для ввода символов +, ^, %,

    , (, ) , <, >, [, ] их также нужно заключить в фигурные скобки.

    Если есть необходимость имитации нажатия клавиши несколько раз подряд, то после нее через пробел прописывается количество, например: – 20 раз подряд нажата клавиша n. Стоит учитывать один немаловажный момент, имитация нажатия клавиши не действует для приложений , которые не были разработаны специально для запуска в Microsoft Windows, например, командная строка .

    SendKeys – имитация нажатия клавиш – приступаем к программированию

    Хорошо, с теорией разобрались, теперь давайте приступим к программированию. Давайте для начала рассмотрим следующий пример программного кода на языке vbscript:

    Видим, что тут мы создали массив символов my_arr(16), их количество составляет 17, так как нумерация элементов массива начинается с нуля. Вы можете возразить, а зачем формировать массив, если все можно прописать в одном строковом значении ? Верно, но, цель сценария не просто отправить коды клавиш, а сделать задержку для каждого символа. Мы видим, что с помощью массива идет обработка каждого элемента, он передается методу SendKeys WScript Shell объекта, после идет задержка в 500 миллисекунд (WScript.Sleep 500), и так для каждого символа. Перед выполнением метода мы запускаем блокнот (WshShell.Run «Notepad.exe», 1) с помощью метода Run (подробно про метод Run я написал в статье «Объект WScript.Shell — метод Run»), поэтому, команды будут передаваться текстовому редактору. Как только все команды будут выполнены, появится сообщение (MsgBox «Конец теста!»), которое проинформирует, что сценарий завершил свою работу. На практике это выглядит так:

    • Запускается блокнот
    • Постепенно вводится текст «это»
    • Делаем два раза имитацию нажатия клавиши Enter ()
    • Постепенно вводится текст «простой»
    • Нажимается два раза клавиша Enter ()
    • Постепенно вводится текст «текст»
    • Появляется сообщение «Конец теста!»

    А вот аналогичный пример, но уже на языке jscript:

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

    А вот еще один пример на vbscript :

    В этом примере мы уже будем направлять с помощью метода SendKeys WScript Shell класса команды программе калькулятор – простая арифметика (100/2*0.5). В конце мы выполним имитацию нажатия комбинации клавиш «ALT + F4«, что бы закрыть калькулятор и выведем сообщение — » Операция выполнена! «. Далее мы снова попытаемся отправить в систему комбинацию «CTRL + ALT + DEL» (запуск диспетчера задач), но, ничего не выйдет, видимо эта комбинация не работает из-за соображений безопасности.

    Ну и пример на языке jscript :

    И так, давайте все подытожим… В этой статье мы рассмотрели функцию SendKeys класса WScript Shell, которая позволяет создавать имитацию нажатия клавиш, мы написали четыре программных кода – два на языке vbscript и два на языке jscript. Помним, что программный код работает под управлением сервера сценариев Windows Script Host.

    Спасибо за внимание. Автор блога Владимир Баталий

    Читайте также:  Sacred ��� mac os
  • Оцените статью