Как эмулировать мышь

Совет 1: Как эмулировать мышь

Манипулятор типа «мышь » – нужный признак всякого компьютера. Без него немыслимо представить управление либо навигацию по приложениям. Данный манипулятор энергично взаимодействует с пользователем посредствам отображения на экране его действий (перемещений, кликов, прокрутки). Для некоторых задач программирования, может понадобиться программная эмуляция мыши.



Вам понадобится

  • – среда разработки Microsoft Visual C++ .Net (не ниже 2003).

Инструкция

1. Установите Microsoft Visual C++ .Net (не ниже 2003). Существует несколько версий данной среды разработки- платная и бесплатная. Их дозволено скачать с сайта разработчика. Позже установки, сделайте новейший план и подключите System.Windows.Forms и System.Drawing, как показано ниже: using System.Windows.Forms; using System.Drawing;

2. Для перемещения мыши по экрану в операционных системах семейства Windows применяйте функции, которые устанавливают непринужденно позицию курсора на экране. Используйте, скажем, дальнейший код:Cursor.Position = new Point(x,y);Данная строка переместит курсор в позицию, указанную в конструкторе класса Point(x,y) (где x и y – координаты позиции в которую следует установить курсор). Если нужно устанавливать позицию курсора многократно, сделайте один экземпляр класса Point и для него применяйте способ изменяющий координаты. Это дозволит сэкономить память: Point point = new Point(0,0); Cursor.Position = point.Offset ( 20 , 100 ) ; Cursor.Position = point.Offset(40,-20); Данный код создает объект класса Point() с координатами 0,0. Вторая строчка смещает точку Point на 20 пикселей по Х и на 100 пикселей по Y. Нынешняя координата, на которую указывает объект point, равна 20, 100. В третьей строке вновь происходит смещение Point на указанное число пикселей (40 и -20 соответственно). Нынешняя координата равна 60 (20+40) по X и 80 (100-20) по Y.

3. Для эмуляции нажатия клавиши мыши используйте функции Win32 SendInput() либо mouse_event(). Скажем, дабы программно имитировать клик правой кнопки используйте дальнейший код://импортируйте mouse_event():[DllImport(“User32.dll”)]static extern void mouse_event(MouseFlags dwFlags, int dx, int dy, int dwData, UIntPtr dwExtraInfo);//для комфорта применения сделайте перечисление с нужными константами (флагами), //которые определяют действия мыши:[Flags]enum MouseFlags{Move = 0x0001, LeftDown = 0x0002, LeftUp = 0x0004, RightDown = 0x0008,RightUp = 0x0010, Absolute = 0x8000};//использование – клик по координатам, установленным ниже:const int x = 39000; //координаты по Хconst int y = 12000; //координаты по Ymouse_event(MouseFlags.Absolute | MouseFlags.Move, x, y, 0, UIntPtr.Zero);mouse_event(MouseFlags.Absolute | MouseFlags.RightDown, x, y, 0, UIntPtr.Zero);mouse_event(MouseFlags.Absolute | MouseFlags.RightUp, x, y, 0, UIntPtr.Zero);

4. Эмулируйте нажатие кнопки мыши посредствам посылки сообщений WM_LBUTTONDOWN и WM_LBUTTONUP, при помощи функции Win API SendMessage(). Скажем, как показано ниже:void OnBtPerformClick(object sender, EventArgs e){SendMessage(btDemo.Handle, Messages.WM_LBUTTONDOWN, MK_LBUTTON, IntPtr.Zero);SendMessage(btDemo.Handle, Messages.WM_LBUTTONUP, MK_LBUTTON, IntPtr.Zero);}

Совет 2: Как эмулировать нажатие

Изредка сценарий работы скрипта либо программы требует имитации некоторых действий пользователя – скажем, нажатие клавиши либо щелчок мышью по какому-нибудь элементу. Реализовать это дозволено либо встроенными средствами того языка программирования, на котором пишется программа, либо с применением особого интерфейса операционной системы. Такой интерфейс предуготовлен для взаимодействия прикладных программ с системными и именуется API – Application Programming Interfaces.

Инструкция

1. Узнаете, предусмотрены ли в используемом для написания программы либо скрипта языке встроенные средства эмуляции нажатия клавиши. Скажем, в языке JavaScript нажатие левой кнопки мыши имитируется с поддержкой способа, привязанного к определенным элементам пользовательского интерфейса. Скажем, дабы эмулировать нажатие левой клавиши мыши при нахождении курсора над кнопкой с именем autoClkButton, размещенной в форму с именем autoClkForm, нужно применять конструкцию document.autoClkButton.autoClkForm.click(). В этом языке качество click() имеют не только кнопки (button, reset, submit), но и элементы выбора – checkbox и radio.

2. Задействуйте внешнюю функцию keybd_event, если в используемом языке нет надобных вам встроенных средств, которые делают все нужное механически. Это функция Win32 API, следственно дабы иметь вероятность из программы обращаться к ним, вам следует разместить в начале кода блок, импортирующий функции внешней библиотеки. Сделать это следует в соответствии с синтаксисом применяемой программной среды. Скажем, в языке программирования терминалов для биржевой торговли MQL (MetaQuotes Language) для вызова функций, размещенных в системную библиотеку user32.dll в начале кода следует разместить такие строки:#import “user32.dll”bool keybd_event(int bVk, int bScan);#importПосле этого станет допустимым применение объявленной в блоке импортирования функции keybd_event.

3. Keybd_event имеет четыре параметра. 1-й (bVk, тип данных BYTE) может принимать одно из 255 значений и указывает на клавишу, нажатие которой будет имитироваться. Какое из этих значений значение присвоено необходимой вам клавише узнаете на этой странице – http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx. 2-й параметр (bScan, тип BYTE) – это «скан-код», тот, что генерируется при нажатии выбранной клавиши. 3-й (dwFlags, тип DWORD) может принимать одно либо оба предусмотренных для него значения (KEYEVENTF_EXTENDEDKEY и KEYEVENTF_KEYUP). Первое указывает, что будет сформирован расширенный код клавиши, а 2-й обозначает, что кнопка была нажата, а после этого отпущена. Четвертый параметр (dwExtraInfo, тип ULONG_PTR) может содержать добавочные флаги, индивидуальные для всей клавиши.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий