PostMessage鼠标单击到背景窗口



我看到很多关于这方面的线程指向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设置位置,或者我必须在外部进行,然后单击,然后将光标设置回原始位置?

感谢您的帮助。

pt.X和pt.Y表示hWnd中的位置,而不是屏幕中的位置
因为您的其余代码运行良好。

您需要更改您的位置操作点,如下所示:

 PostMessage(pl, WM_LBUTTONDOWN, 1,MakeLParam(70,20));
        PostMessage(pl, WM_LBUTTONUP, 0,MakeLParam(71,21));

最新更新