我已經看到很多關於這個指向SendInput的線程,但在這種情況下不起作用。PostMessage鼠標點擊背景窗口
我想發送一個鼠標點擊某個位置到一個背景窗口(遊戲)。
我可以使用PostMessage成功發送鼠標點擊到背景窗口,但我需要在外部設置鼠標位置以使其工作。
[DllImport("user32.dll")]
static extern bool PostMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
const int WM_LBUTTONDOWN = 0x0201;
const int WM_LBUTTONUP = 0x0202;
PostMessage(hWnd, WM_LBUTTONDOWN, 1, 0);
PostMessage(hWnd, WM_LBUTTONUP, 0, 0);
我也試過用點延伸
public int MakeLParam(int LoWord, int HiWord)
{
return (int)((HiWord << 16) | (LoWord & 0xFFFF));
}
PostMessage(hWnd, WM_LBUTTONDOWN, 1, MakeLParam(pt.X, pt.Y));
但似乎沒有任何工作。 是否可以通過PostMessage設置位置,還是必須在外部進行,然後單擊,然後將光標移回到原始位置?
任何幫助表示讚賞。
它往往工作,但事故是很常見的。你不(也不能)控制鍵盤的狀態,所以程序可能會認爲你生成了,比如Ctrl + Click。當然,你可能會弄錯窗口句柄,Process.MainWindowHandle通常不正確。使用Spy ++,外觀好看,總是偏愛UI自動化庫。 – 2015-02-10 13:06:30