2

我正在尝试按左箭头键按钮和右箭头键按钮。
我传入的窗口句柄是正确的。(见下面的截图)

当我按下左/右键时,我使用 Microsoft Spy++ 找出正确的 PostMessage。

这是显示lParam和的屏幕截图WParam

前 2 个屏幕截图是VK_RIGHT( WM_KEYDOWN& WM_KEYUP)
后 2 个屏幕截图是VK_LEFT( WM_KEYDOWN& WM_KEYUP)

留言 1 留言 2 留言 3 留言 4

这是我尝试使用它的代码,方法是按下以测试ORNUMPAD1,2,3是否有效..(它们都不起作用)。VK_LEFTVK_RIGHT

gKey(VK_NUMPAD1) //crap testing
        {
            windowHandle = FindWindow(L"SSClientMainWndClass", NULL);
            printf("window handle = %x\n", windowHandle);
            PostMessage(windowHandle, WM_KEYDOWN, VK_RIGHT, 0x414D0001);
            //Sleep(1000);
            PostMessage(windowHandle, WM_KEYUP, VK_RIGHT, 0xC14D0001);
            Sleep(1000);

        }
gKey(VK_NUMPAD2) //crap testing
        {
            windowHandle = FindWindow(L"SSClientMainWndClass", NULL);
            printf("window handle = %x\n", windowHandle);
            PostMessage(windowHandle, WM_KEYDOWN, VK_LEFT, 0x414B0001);
            Sleep(1000);
            PostMessage(windowHandle, WM_KEYUP, VK_LEFT, 0xC14B0001);
            Sleep(1000);
        }

代码

以下是VK_NUMPAD1在游戏中按下的截图。(发布消息被发送到正确的窗口,并且信息似乎正确!) [留言1 留言 2

4

1 回答 1

1

也许您需要以管理员身份运行程序,您不能将输入发送到比您更高的进程。我使用keybd_event()并且它总是对我有用,提到 Home/End 需要 KEYEVENTF_EXTENDEDKEY。

我知道这很旧,但我一直在寻找类似的东西,发现这没有答案。

于 2021-07-01T18:43:49.943 回答