2010-04-03 36 views
1

我正在寫一個小程序,它可以模擬指定位置的鼠標點擊。 使用Win32 API調用mouse_event像這樣:mouse_event當光標結束時WinAPI調用不起作用閃光燈

[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

嘗試

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

此外,由於一些奇怪的原因,我有問題,與上面的P/Invoke調用約定,請參見Simulating a mouse button click in Windows