Как эмулировать нажатие?
3 ноября 2014 г. Просмотров: 797
Иногда сценарий работы скрипта или программы требует имитации некоторых действий пользователя - например, нажатие клавиши или щелчок мышью по какому-либо элементу. Реализовать это можно либо встроенными средствами того языка программирования, на котором пишется программа, либо с использованием специального интерфейса операционной системы. Такой интерфейс предназначен для взаимодействия прикладных программ с системными и называется API - Application Programming Interfaces. Выясните, предусмотрены ли в используемом для написания программы или скрипта языке встроенные средства эмуляции нажатия клавиши. Например, в языке JavaScript нажатие левой кнопки мыши имитируется с помощью метода, привязанного к конкретным элементам пользовательского интерфейса. Скажем, чтобы эмулировать нажатие левой клавиши мыши при нахождении курсора над кнопкой с именем autoClkButton, помещенной в форму с именем autoClkForm, надо использовать конструкцию document.autoClkButton.autoClkForm.click(). В этом языке свойство click() имеют не только кнопки (button, reset, submit), но и элементы выбора - checkbox и radio. Задействуйте внешнюю функцию keybd_event, если в используемом языке нет нужных вам встроенных средств, которые делают все необходимое автоматически. Это функция Win32 API, поэтому чтобы иметь возможность из программы обращаться к ним, вам следует поместить в начале кода блок, импортирующий функции внешней библиотеки. Сделать это следует в соответствии с синтаксисом используемой программной среды. Например, в языке программирования терминалов для биржевой торговли MQL (MetaQuotes Language) для вызова функций, помещенных в системную библиотеку user32.dll в начале кода следует поместить такие строки:#import "user32.dll"bool keybd_event(int bVk, int bScan);#importПосле этого станет возможным использование объявленной в блоке импортирования функции keybd_event. Keybd_event имеет четыре параметра. Первый (bVk, тип данных BYTE) может принимать одно из 255 значений и указывает на клавишу, нажатие которой будет имитироваться. Какое из этих значений значение присвоено нужной вам клавише выясните на этой странице - http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx. Второй параметр (bScan, тип BYTE) - это «скан-код», который генерируется при нажатии выбранной клавиши. Третий (dwFlags, тип DWORD) может принимать одно или оба предусмотренных для него значения (KEYEVENTF_EXTENDEDKEY и KEYEVENTF_KEYUP). Первое указывает, что будет сформирован расширенный код клавиши, а второй означает, что кнопка была нажата, а затем отпущена. Четвертый параметр (dwExtraInfo, тип ULONG_PTR) может содержать дополнительные флаги, индивидуальные для каждой клавиши.
Оцените статью!