2010-04-03 84 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