mouse_event WinAPI вызов не работает, когда курсор находится над Flash - PullRequest
1 голос
/ 03 апреля 2010

Я пишу небольшую программу, которая может симулировать щелчки мышью в указанных местах. Используя Win32 API, вызов mouse_event выглядит так:

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, UIntPtr dwExtraInfo);

[Flags]
public enum MouseEventFlags : uint
{
    LEFTDOWN = 0x00000002,
    LEFTUP = 0x00000004,
    MIDDLEDOWN = 0x00000020,
    MIDDLEUP = 0x00000040,
    MOVE = 0x00000001,
    ABSOLUTE = 0x00008000,
    RIGHTDOWN = 0x00000008,
    RIGHTUP = 0x00000010
}

mouse_event((uint)(MouseEventFlags.LEFTDOWN | MouseEventFlags.LEFTUP), x, y, 0, UIntPtr.Zero);

Прекрасно работает, за исключением случаев, когда курсор мыши находится над приложением Flash . Flash, кажется, игнорирует симулированный щелчок мыши. Что может быть причиной этого? И как мне это исправить?

Спасибо!

1 Ответ

1 голос
/ 09 июня 2010

Попробуйте

mouse_event((uint)
(MouseEventFlags.LEFTDOWN | MouseEventFlags.LEFTUP | MouseEventFlags.ABSOLUTE), 
 x, y, 0, UIntPtr.Zero);

Кроме того, по какой-то странной причине у меня возникли проблемы с вышеуказанным соглашением о вызовах P / Invoke, см. Имитация нажатия кнопки мыши в Windows

...