我已经看到很多关于这个指向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