我制作了一个类似于Wii遥控器的设备,希望将其用作Windows(8.1)中的鼠标。该设备通过TCP连接到我Windows计算机上的C++ Win32程序,并发送鼠标光标应移动的位置。我使用SetCursorPos函数设置位置,这对于控制大多数程序都很好用。但是当我尝试控制例如任务管理器时,光标就不再移动了。当我从任务管理器切换回其他程序时,它又能正常工作了。我也尝试使用SendInput函数,但结果相同。
以下是使用SendInput的代码:
INPUT Input = { 0 };
Input.type = INPUT_MOUSE;
Input.mi.dx = (LONG)posX;
Input.mi.dy = (LONG)posY;
// set move cursor directly
Input.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
SendInput(1, &Input, sizeof(INPUT));
使用SetCursorPos只需要一行代码:
SetCursorPos(posX, posY);
有人可以告诉我为什么它对某些程序不起作用吗?我知道这是可能的,因为我试过一个智能手机应用程序,可以控制光标,并且在所有程序中都可以使用。