1. Гость - предлагаем Вам : Мощные Выделенные Серверы 16-24 ядра / Lan 1Gbps - для XRumer, ZennoPoster, GSA, и другого сео-софта от 80 usd/месяц, для уточнения деталей воспользуйтесь формой обратной связи, или напишите Администратору форума в ЛС. ICQ:698-329-725

C-Sharp (C#) Автоматизация, управления мышью программно, mouseevents

Тема в разделе "Разработка приложений C# .Net Скрипты библиотеки .", создана пользователем Prime, 4 май 2018.

  1. Prime

    Prime Administrator
    Команда форума

    Регистрация:
    8 янв 2016
    Сообщения:
    2.526
    Симпатии:
    1.314
    В последнее время всё чаще задаются вопросы: как нажать на кнопку программно, как кликнуть на объект по заданным координатам, как управлять курсором мыши. В следствии разработки софта для автоматизации родилась библиотека для управления мышью "MouseEvents".

    Код (C#):
    1. public class MouseEvents
    2. {
    3.     /// <summary>
    4.     /// Возвращает позицию курсора X
    5.     /// </summary>
    6.     public static int CursorPostionX
    7.     {
    8.         get
    9.         {
    10.             return MouseEvents.GetCursorPostionX();
    11.         }
    12.     }
    13.     /// <summary>
    14.     /// Возвращает позицию курсора Y
    15.     /// </summary>
    16.     public static int CursorPostionY
    17.     {
    18.         get
    19.         {
    20.             return MouseEvents.GetCursorPostionY();
    21.         }
    22.     }
    23.       [DllImport("user32.dll")]
    24.     private static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo);
    25.     [DllImport("user32.dll")]
    26.     private static extern short GetAsyncKeyState(Keys vKey);
    27.     private static int GetCursorPostionX()
    28.     {
    29.         return Cursor.Position.X;
    30.     }
    31.     private static int GetCursorPostionY()
    32.     {
    33.         return Cursor.Position.Y;
    34.     }
    35.       /// <summary>
    36.     /// Устанавливает позицию курсора по заданным координатам x, y.
    37.     /// </summary>
    38.     /// <param name="x">Позиция x</param>
    39.     /// <param name="y">Позиция y</param>
    40.     public static void SetCursorPostion(int x, int y)
    41.     {
    42.         Cursor.Position = new Point(x, y);
    43.     }
    44.       /// <summary>
    45.     /// Возвращает статус указанной кнопки мыши
    46.     /// </summary>
    47.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    48.     /// <returns></returns>
    49.     public static bool GetKeyStatus(MouseButtons mouseButton)
    50.     {
    51.         switch (mouseButton)
    52.         {
    53.             case MouseButtons.LEFT:
    54.                 return (uint)MouseEvents.GetAsyncKeyState(Keys.LButton) > 0U;
    55.             case MouseButtons.MIDDLE:
    56.                 return (uint)MouseEvents.GetAsyncKeyState(Keys.MButton) > 0U;
    57.             case MouseButtons.RIGHT:
    58.                 return (uint)MouseEvents.GetAsyncKeyState(Keys.RButton) > 0U;
    59.             default:
    60.                 return false;
    61.         }
    62.     }
    63.     /// <summary>
    64.     /// Происходит при нажатии указанной кнопки мыши
    65.     /// </summary>
    66.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    67.     public static void Down(MouseButtons mouseButton)
    68.     {
    69.         switch (mouseButton)
    70.         {
    71.             case MouseButtons.LEFT:
    72.                 MouseEvents.mouse_event(2U, 0U, 0U, 0U, 0);
    73.                 break;
    74.             case MouseButtons.MIDDLE:
    75.                 MouseEvents.mouse_event(32U, 0U, 0U, 0U, 0);
    76.                 break;
    77.             case MouseButtons.RIGHT:
    78.                 MouseEvents.mouse_event(8U, 0U, 0U, 0U, 0);
    79.                 break;
    80.         }
    81.     }
    82.     /// <summary>
    83.     /// Происходит при нажатии указанной кнопки мыши, и координат x, y.
    84.     /// </summary>
    85.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    86.     /// <param name="x">Позиция x</param>
    87.     /// <param name="y">Позиция y</param>
    88.     public static void Down(MouseButtons mouseButton, int x, int y)
    89.     {
    90.         MouseEvents.SetCursorPostion(x, y);
    91.         MouseEvents.Down(mouseButton);
    92.     }
    93.     /// <summary>
    94.     /// Происходит при отпускании указанной кнопки мыши.
    95.     /// </summary>
    96.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    97.     public static void Up(MouseButtons mouseButton)
    98.     {
    99.         switch (mouseButton)
    100.         {
    101.             case MouseButtons.LEFT:
    102.                 MouseEvents.mouse_event(4U, 0U, 0U, 0U, 0);
    103.                 break;
    104.             case MouseButtons.MIDDLE:
    105.                 MouseEvents.mouse_event(64U, 0U, 0U, 0U, 0);
    106.                 break;
    107.             case MouseButtons.RIGHT:
    108.                 MouseEvents.mouse_event(16U, 0U, 0U, 0U, 0);
    109.                 break;
    110.         }
    111.     }
    112.     /// <summary>
    113.     /// Происходит при отпускании указанной нопки мыши, и координат: x, y
    114.     /// </summary>
    115.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    116.     /// <param name="x">Позиция x</param>
    117.     /// <param name="y">Позиция y</param>
    118.     public static void Up(MouseButtons mouseButton, int x, int y)
    119.     {
    120.         MouseEvents.SetCursorPostion(x, y);
    121.         MouseEvents.Up(mouseButton);
    122.     }
    123.     /// <summary>
    124.     /// Происходит при клике указанной кнопкой мыши
    125.     /// </summary>
    126.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    127.     public static void Click(MouseButtons mouseButton)
    128.     {
    129.         MouseEvents.Down(mouseButton);
    130.         MouseEvents.Up(mouseButton);
    131.     }
    132.     /// <summary>
    133.     /// Происходит при клике указанной кнопкой мыши, N раз.
    134.     /// </summary>
    135.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    136.     /// <param name="count">Количество нажатий</param>
    137.     public static async void Click(MouseButtons mouseButton, int count)
    138.     {
    139.         for (int i = 0; i < count; ++i)
    140.         {
    141.             MouseEvents.Click(mouseButton);
    142.             await Task.Delay(1);
    143.         }
    144.     }
    145.     /// <summary>
    146.     /// Происходит при клике указанной кнопкой мыши, по заданным координатам: x, y.
    147.     /// </summary>
    148.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    149.     /// <param name="x">Позиция x</param>
    150.     /// <param name="y">Позиция y</param>
    151.     public static void Click(MouseButtons mouseButton, int x, int y)
    152.     {
    153.         MouseEvents.SetCursorPostion(x, y);
    154.         MouseEvents.Click(mouseButton);
    155.     }
    156.     /// <summary>
    157.     /// Происходит при клике указанной кнопкой мыши, по заданным координатам: x, y, n раз.
    158.     /// </summary>
    159.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    160.     /// <param name="x">Позиция x</param>
    161.     /// <param name="y">Позиция y</param>
    162.     /// <param name="count">Количество нажатий</param>
    163.     public static void Click(MouseButtons mouseButton, int x, int y, int count)
    164.     {
    165.         MouseEvents.SetCursorPostion(x, y);
    166.         MouseEvents.Click(mouseButton, count);
    167.     }
    168.     /// <summary>
    169.     /// Удерживает кнопку мыши в нажатом состоянии, N миллисекунд.
    170.     /// </summary>
    171.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    172.     /// <param name="delay">Пауза в миллисекундах</param>
    173.     public static async void Hold(MouseButtons mouseButton, int delay)
    174.     {
    175.         MouseEvents.Down(mouseButton);
    176.         await Task.Delay(delay);
    177.         MouseEvents.Up(mouseButton);
    178.     }
    179.     /// <summary>
    180.     /// Удерживает кнопку мыши в нажатом состоянии, по заданным координатам: x, y N миллисекунд.
    181.     /// </summary>
    182.     /// <param name="mouseButton">Кнопка мыши: Left Middle Right </param>
    183.     /// <param name="x">Позиция x</param>
    184.     /// <param name="y">Позиция y</param>
    185.     /// <param name="delay">Пауза в миллисекундах</param>
    186.     public static async void Hold(MouseButtons mouseButton, int x, int y, int delay)
    187.     {
    188.         MouseEvents.Down(mouseButton, x, y);
    189.         await Task.Delay(delay);
    190.         MouseEvents.Up(mouseButton);
    191.     }
    192.     private enum MouseEventFlags
    193.     {
    194.         LEFTDOWN = 2,
    195.         LEFTUP = 4,
    196.         RIGHTDOWN = 8,
    197.         RIGHTUP = 16,
    198.         MIDDLEDOWN = 32,
    199.         MIDDLEUP = 64,
    200.     }
    201. }
    Код (C#):
    1. public enum MouseButtons
    2. {
    3.     LEFT,
    4.     MIDDLE,
    5.     RIGHT,
    6. }
    Рассмотрим примеры применения данного класса:

    В данном примере нажимаем левой кнопкой мыши по координатам родительского окна + 50 px, количество кликов 1.
    Код (C#):
    1.  MouseEvents.Click(MouseButtons.LEFT, Location.X + 50, Location.Y + 50, 1);
    Получаем координаты курсора x y, устанавливаем курсор по новым координатам.
    Код (C#):
    1. int x = MouseEvents.CursorPostionX;
    2. int y = MouseEvents.CursorPostionY;
    3. MouseEvents.SetCursorPostion(x + 100, y + 25);
    Удерживаем нажатой левую кнопку мыши по координатам x, y, 3000 миллисекунд = 3 секунды.

    Код (C#):
    1. MouseEvents.Hold(IMouseButtons.LEFT, 500, 500, 3000);
     

    Вложения:

    • MouseEvents.zip
      MouseEvents.zip
      Размер файла:
      69,1 КБ
      Просмотров:
      5
    amt999 нравится это.

Поделиться этой страницей