我有这个代码:
[DllImport("user32.dll")]
static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, UIntPtr dwExtraInfo);
[Flags]
public enum MouseEventFlags
{
Move = 0x0001,
LeftDown = 0x0002,
LeftUp = 0x0004,
RightDown = 0x0008,
RightUp = 0x0010,
MiddleDown = 0x0020,
MiddleUp = 0x0040,
Absolute = 0x8000
}
public void SimMouseEvent(MouseEventFlags e, int x, int y)
{
mouse_event((uint)e, (uint)x, (uint)y, 0, UIntPtr.Zero);
}
public void SimLeftClick(int x, int y)
{
SimMouseEvent(MouseEventFlags.LeftUp | MouseEventFlags.RightUp, x, y);
}
我的表格如下所示:
当您单击“按钮”时,它会运行:
private void button3_Click(object sender, RoutedEventArgs e)
{
SimLeftClick(50, 50);
}
在我的窗口上我也有这个:
private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("click");
}
当我单击窗口时,它按预期显示“单击”,但是当我单击“按钮”时,它似乎没有做任何事情。
坐标是绝对的还是相对的?多显示器怎么样?他们只在重点应用上工作吗?
我希望 50,50 要么在某个地方点击我的窗口并触发“点击”处理程序,要么点击一些随机窗口,因为它完全错过了我的应用程序并专注于它......为什么没有发生任何事情?