Winapi 原始输入处理(区分辅助鼠标)

Winapi 原始输入处理(区分辅助鼠标),winapi,input,mouse,raw-input,Winapi,Input,Mouse,Raw Input,我在用winapi的原始输入写一些图片 虽然我不确定它有多可靠(不可靠),但它似乎在工作 (如果它能在所有系统、机器等上工作,这就有点令人担忧了) 也出现了很多问题,一个是 我想用老方法使用我的第一个鼠标(我指的是普通/基本鼠标), 它是processint WM_MOUSEMOVE等和移动箭头光标,只有 辅助鼠标我需要通过raw_输入进行处理(主鼠标可以不被rawinput触及),问题是 1) 如何确定rawinput检测到的鼠标是 中学 2) 如果禁用,第二个鼠标也会移动我的箭头光标 它由R

我在用winapi的原始输入写一些图片 虽然我不确定它有多可靠(不可靠),但它似乎在工作 (如果它能在所有系统、机器等上工作,这就有点令人担忧了)

也出现了很多问题,一个是

我想用老方法使用我的第一个鼠标(我指的是普通/基本鼠标), 它是processint WM_MOUSEMOVE等和移动箭头光标,只有 辅助鼠标我需要通过raw_输入进行处理(主鼠标可以不被rawinput触及),问题是

1) 如何确定rawinput检测到的鼠标是 中学

2) 如果禁用,第二个鼠标也会移动我的箭头光标 它由RIDEV_NOLEGACY提出,然后两者都没有移动光标(它是沙漏),这也是错误的

我想也许我应该把它设置得有点不同我的setrup rawinput函数是这样的

    void SetupRawInput()
    {

    static RAWINPUTDEVICE Rid[1];

    Rid[0].usUsagePage = 0x01;
    Rid[0].usUsage = 0x02;
    Rid[0].dwFlags = 0;     //   Rid[0].dwFlags =  RIDEV_NOLEGACY;   /
    Rid[0].hwndTarget = NULL;

    int r = RegisterRawInputDevices( Rid, 1, sizeof(Rid[0]) );

    if (!r)  ERROR_EXIT("raw input register fail");

    }

如何解决此问题并使其发挥作用?tnx

我不知道我的方法是否是最好的,但这是我如何处理你问题的第一项:

当我使用GetRawInputData(…)处理WM_输入时,我检查由RawInputReader结构传回的设备句柄(包含在函数返回的RAWINPUT结构中)是否与我要使用的设备相同。如果不是,那么我就不用发回数据了,如果是,那么我就处理在RAWINPUT结构中返回的RAWINPUTMOUSE数据

如果您想知道如何获取设备列表,可以使用GetRawInputDeviceList(…),它将返回您尝试使用的鼠标的设备句柄

正如我所说,这可能不是最好的方法,但我已经证实,它确实符合我的目的。我也为我的键盘原始输入数据做了这项工作

至于第#2项,它可能会影响两个鼠标,因为Windows对鼠标具有独占访问权限,因此如果不使用相同的标志注册鼠标,则无法注册一个特定的鼠标。但是一个比我更有知识的人可能会给出更好的解释