Прочитали ли вы описание функции 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
.