PostMessage - 在不移动光标的情况下发送鼠标点击

时间:2016-08-25 15:07:07

标签: c#

首先抱歉我的英语不好。

我为游戏开发了一个机器人程序。一切正常,但我想改进它。

我正在使用' PostMessage'将键盘和鼠标输入发送到特定的窗口句柄。鼠标输入很棘手,因为如果光标不在给定位置,游戏就不接受输入。因为我必须使用' SetCursorPos'在使用' PostMessage'。

之前

我想改进我的代码,以便在程序运行时能够使用我的PC。这意味着我不希望光标跳过我的桌面。是否有解决方案' PostMessage'无需设置光标位置或类似的东西?

以下是我的代码示例:

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", EntryPoint = "PostMessageA", SetLastError = true)]
private static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

[DllImport("user32.dll")]
static extern bool SetCursorPos(int x, int y);

private const uint WM_LBUTTONDOWN = 0x0201;

public static void MouseLeftDown(IntPtr hWnd, int x, int y)
{
SetCursorPos(x, y);
PostMessage(hWnd, WM_LBUTTONDOWN, IntPtr.Zero, new IntPtr(MAKEPARAM(x, y)));
}

private static int MAKEPARAM(int lWord, int hWord)
{
return ((lWord & 0xFFFF) | (hWord << 0x10));
}

0 个答案:

没有答案