要使用Raw Input API模拟键盘和鼠标,可以使用以下步骤:

  1. 使用RegisterRawInputDevices函数注册原始输入设备,以便操作系统将输入设备的数据发送给应用程序。

  2. 在消息循环中使用GetRawInputData函数获取输入数据。

  3. 使用SendInput函数模拟键盘和鼠标输入。

以下是一个简单的示例代码:

#include <Windows.h>

int main()
{
    // 注册原始输入设备
    RAWINPUTDEVICE rid[2];
    rid[0].usUsagePage = 0x01; // Generic Desktop
    rid[0].usUsage = 0x06; // Keyboard
    rid[0].dwFlags = RIDEV_NOLEGACY;
    rid[0].hwndTarget = NULL;

    rid[1].usUsagePage = 0x01; // Generic Desktop
    rid[1].usUsage = 0x02; // Mouse
    rid[1].dwFlags = RIDEV_NOLEGACY;
    rid[1].hwndTarget = NULL;

    if (!RegisterRawInputDevices(rid, 2, sizeof(RAWINPUTDEVICE)))
    {
        // 注册失败
        return 0;
    }

    // 模拟键盘输入
    INPUT input;
    input.type = INPUT_KEYBOARD;
    input.ki.wScan = MapVirtualKey('A', MAPVK_VK_TO_VSC);
    input.ki.time = 0;
    input.ki.dwFlags = 0;
    input.ki.dwExtraInfo = 0;
    input.ki.wVk = 0;

    SendInput(1, &input, sizeof(INPUT));

    // 模拟鼠标输入
    input.type = INPUT_MOUSE;
    input.mi.dx = 100;
    input.mi.dy = 100;
    input.mi.mouseData = 0;
    input.mi.dwFlags = MOUSEEVENTF_MOVE;
    input.mi.time = 0;
    input.mi.dwExtraInfo = 0;

    SendInput(1, &input, sizeof(INPUT));

    return 0;
}

需要注意的是,使用Raw Input API模拟输入不会绕过消息机制,而是通过模拟输入设备数据触发消息。因此,应用程序需要处理输入设备的消息才能正确响应模拟输入

Raw Input API 怎么模拟键盘和鼠标的呢C++ 需要绕过消息机制

原文地址: https://www.cveoy.top/t/topic/c2bl 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录