0

我玩电脑游戏时需要用手指移动鼠标指针。(比如说crysis3 ..这样我就可以用我的手指移动相机)。

在移动时,我可以在不玩游戏时移动鼠标。我为此使用了 SetCursorPos() 窗口函数。(动作也不完美,但这不是问题。)

但问题是这个(SetCursorPos)对游戏没有影响..

谁能告诉我为什么以及如何解决这个问题?

谢谢你。

4

2 回答 2

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 .. 它没有用.. 但后来我凭直觉使用了相对运动,它起作用了......

于 2013-06-23T14:34:08.083 回答
0

SetCursorPos不起作用的原因是因为游戏可能使用更低级别的 API 来捕获鼠标输入,可能类似于DirectInput

我怀疑您可以拦截该输入的唯一方法是使用过滤器驱动程序。请参阅此 Stack Overflow 问题的答案:拦截鼠标输入

于 2013-06-22T19:26:16.473 回答