我创建了一个类似于 wiimote 的设备,我想将它用作 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);
谁能告诉我为什么它不适用于某些程序?我知道它必须有可能做到这一点,因为我尝试了一个控制光标的智能手机应用程序,它适用于所有程序。