我已经编写了一段代码来模拟鼠标点击,这在我的Vista中运行良好。但是当我在Windows 7中测试它时,它没有生成click事件。有人可以帮忙吗?我正在添加下面的代码段。 谢谢, Nikil
[DllImport("user32.dll")]
static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
[Flags]
public enum MouseEventFlags
{
LEFTDOWN = 0x00000002,
LEFTUP = 0x00000004,
MIDDLEDOWN = 0x00000020,
MIDDLEUP = 0x00000040,
MOVE = 0x00000001,
ABSOLUTE = 0x00008000,
RIGHTDOWN = 0x00000008,
RIGHTUP = 0x00000010
}
System.Windows.Forms.Cursor.Hide();
System.Windows.Forms.Cursor.Position = new System.Drawing.Point(xinc + rct.Left, yinc + rct.Top);
int X = System.Windows.Forms.Cursor.Position.X;
int y = System.Windows.Forms.Cursor.Position.Y;
mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0);
mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0);
System.Windows.Forms.Cursor.Position = new System.Drawing.Point(0, 0);
System.Windows.Forms.Cursor.Show();
答案 0 :(得分:9)
我的水晶球说你不只是升级到Win7,你也得到了64位版本。以前你有32位版本的Vista。你的mouse_event()声明是错误的。最后一个参数是IntPtr,而不是int。
球怎么做?
答案 1 :(得分:0)
不确定这是否会对您有所帮助,但您是否看过UI自动化? link text
答案 2 :(得分:0)
对我有用的技巧是在mouse_event
调用之前使用SetCursorPos和相同的坐标。我还刚刚验证了以下工作(在winforms上):
public static void LeftClick(int x, int y)
{
Cursor.Position = new System.Drawing.Point(x, y); //<= fails without this
mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0);
mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0);
}