是否可以通過編程方式在另一個窗口中單擊某個位置而無需將鼠標移至該位置,即使該窗口不在頂部?我想發送一種消息到另一個窗口來模擬鼠標點擊一個位置。以編程方式在另一個窗口中單擊鼠標
我試着用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。
這是您控制的另一個窗口嗎?如果不是,這似乎是一個非常奇怪的要求。 – Tejs 2012-04-27 17:38:08
你試圖點擊什麼程序?一些程序(主要是遊戲)有機制來處理你想要做的事情並忽略它。在這種情況下,你最好的機會就是使用WinApi使遊戲最頂級,移動鼠標,點擊,移動鼠標,將遊戲移回到先前的z順序。 – SimpleVar 2012-04-27 17:38:23
另外,在做'<< 16'之前嘗試將'HiWord'投射到'uint'。 – SimpleVar 2012-04-27 17:49:03