我已经看到很多关于这个指向SendInput的线程,但在这种情况下这不起作用。
我正在尝试将鼠标点击发送到某个位置到背景窗口(游戏)。
我可以使用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设置位置,或者我必须在外部进行设置,然后单击,然后将光标设置回原始位置?
感谢任何帮助。
答案 0 :(得分:1)
pt.X和pt.Y表示 hWnd中的位置,而不是屏幕中的位置。
因为其余代码效果很好。
答案 1 :(得分:0)
你需要像这样改变你的位置:
PostMessage(pl, WM_LBUTTONDOWN, 1,MakeLParam(70,20));
PostMessage(pl, WM_LBUTTONUP, 0,MakeLParam(71,21));