Код для щелчка мышью - PullRequest
       33

Код для щелчка мышью

1 голос
/ 20 марта 2012

Я пытаюсь сделать клик на рабочем столе с помощью кода, поэтому я сделал это:

    public static void MouseLeftClick(Point pos)
    {
        System.Windows.Forms.Cursor.Position = pos;
        mouse_event(MOUSEEVENTF_LEFTDOWN, pos.X, pos.Y, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, pos.X, pos.Y, 0, 0);
    }

Я понимаю, что это работает, только если я добавлю System.Windows.Forms.Cursor.Position = pos; Зачем? Параметры mouse_event x, y бесполезны?

1 Ответ

2 голосов
/ 20 марта 2012

Прочитали ли вы описание функции mouse_event?

Если, например, используется только RIGHTDOWN, параметры X и Y не представляют координаты, в которых находится мышь

Вот как вы можете справиться с mouse _event:

[DllImport("user32.dll")]
private static extern void mouse_event(MouseEventFlags dwFlags, uint dx, uint dy, uint dwData, UIntPtr dwExtraInfo);

...

// Converts into pixels
uint x = (uint)(pos.X * 65535 / Screen.PrimaryScreen.Bounds.Width);
uint y = (uint)(pos.Y * 65535 / Screen.PrimaryScreen.Bounds.Height);

// Moves the mouse (absolute)
mouse_event(MouseEventFlags.MOVE | MouseEventFlags.ABSOLUTE, x, y, 0, UIntPtr.Zero);

// Now button down
mouse_event(MouseEventFlags.RIGHTDOWN, 0, 0, 0, UIntPtr.Zero);
mouse_event(MouseEventFlags.RIGHTUP, 0, 0, 0, UIntPtr.Zero);

Конечно, установить позицию курсора гораздо проще, чем с помощью mouse_event, чтобы сказать, что вашмышь переместилась.

Кстати, эта функция была отменена.Вместо этого используйте SendInput.

...