是否可以在不将鼠标移动到该位置的情况下,在另一个窗口中以编程方式单击位置,即使该窗口不在顶部也是如此?我想向另一个窗口发送一种消息,以模拟鼠标单击位置。
我尝试使用PostMessage来实现这个问题:
PostMessage(WindowHandle, 0x201, IntPtr.Zero, CreateLParam(300,300));
PostMessage(WindowHandle, 0x202, IntPtr.Zero, CreateLParam(300,300));
我这样实现了CreateLParam函数:
private static IntPtr CreateLParam(int LoWord, int HiWord)
{
return (IntPtr)((HiWord << 16) | (LoWord & 0xffff));
}
问题在于窗口被锁定在它的位置上。我认为我的应用程序点击了(1,1)坐标。有人能帮我解决这个问题吗?
编辑: 这是PostMessage:
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll")]
public static extern bool PostMessage(IntPtr WindowHandle, int Msg, IntPtr wParam, IntPtr lParam);
0x201和0x202分别代表了鼠标左键按下和释放的消息WM_LBUTTONDOWN和WM_LBUTTONUP。
<< 16
操作之前,尝试将HiWord
强制转换为uint
。 - SimpleVar