首先抱歉我的英语不好。
我为游戏开发了一个机器人程序。一切正常,但我想改进它。
我正在使用' 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));
}