当我玩电脑游戏时,我需要用手指移动鼠标指针。 (说crysis3 ..这样我就能用手指移动相机)。
在运动时,我可以在不玩游戏时移动鼠标。我使用了SetCursorPos()windows函数。 (运动也不完美,但这不是一个问题。)
但问题是这个(SetCursorPos)对游戏没有影响..
任何人都可以告诉我为什么以及如何解决这个问题?
谢谢。
答案 0 :(得分:0)
SetCursorPos
不起作用的原因是因为游戏可能使用更低级别的API来捕获鼠标输入,可能类似于DirectInput。
我怀疑你可以截取输入的唯一方法是使用过滤器驱动程序。请参阅此Stack Overflow问题的答案:Intercept mouse input
答案 1 :(得分:0)
最后我能够让它发挥作用.... :)
SendInput()工作
mx = (cordi[0][0]) * screenWidth / (640);
my = (cordi[0][1]) * screenHeight / (480);
INPUT input;
input.type = INPUT_MOUSE;
input.mi.mouseData = 0;
input.mi.dx = -(mx - prevX);//65536 - ((mx - prevX) *(65536/GetSystemMetrics(SM_CXSCREEN)));//x being coord in pixels
input.mi.dy = (my - prevY);//(my - prevY) *(65536/GetSystemMetrics(SM_CYSCREEN));//y being coord in pixels
input.mi.dwFlags = MOUSEEVENTF_MOVE;//MOUSEEVENTF_ABSOLUTE
SendInput(1,&input,sizeof(input));
我第一次使用MOUSEEVENTF_ABSOLUTE ..它不起作用..但后来我只是在预感中使用相对运动而且它有效......