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

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

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

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

- Середовище розробки 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 = 0×0001, LeftDown = 0×0002, LeftUp = 0×0004, RightDown = 0×0008,

    RightUp = 0×0010, Absolute = 0×8000};

    / / Використання — клік по координатах, встановленим нижче:

    const int x = 39000; / / координати по Х

    const int y = 12000; / / координати по Y

    mouse_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);

    }