Як емулювати мишу

Як емулювати мишу


Маніпулятор типу "миша" - необхідний атрибут будь-якого комп 'ютера. Без нього неможливо уявити керування або навігацію за додатками. Цей маніпулятор активно взаємодіє з користувачем за допомогою відображення на екрані його дій (переміщень, кліків, прокрутки). Для деяких завдань програмування, може знадобитися програмна емуляція миші.

Вам знадобиться

  • - середовище розробки Microsoft Visual C++ .Net (не нижче 2003).

Інструкція

1. Встановіть Microsoft Visual C++ .Net (не нижче 2003). Існує кілька версій даного середовища розробки- платна і безкоштовна. Їх можна завантажити з сайту розробника. Після установки, створіть новий проект і підключіть System.Windows.Ces і 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 пікселів X і на 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, RceDown = 0x0008,RightUp = 0x0010, Absolute = 0х8000} ;//використання - клік за координатами, встановленими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);}