移动鼠标位置然后返回到开始位置

时间:2016-08-15 13:04:39

标签: c++ visual-studio

我正在尝试按键将鼠标移动到屏幕上的其他位置,然后立即以非常快的速度(每秒50次以上)返回。这是我当前的代码。

#include "stdafx.h"
#include <iostream>
#include <windows.h>

int main()
{
POINT p;

for( ; ; )
{

if (GetAsyncKeyState(0x57) < 0)
{
    GetCursorPos(&p);
    std::cout << "W key pressed";           
    SetCursorPos(0, 0);
    SetCursorPos(p.x, p.y);
    Sleep(100);
}
}

使用这段代码,它只会改变我的鼠标位置,然后更新它的位置(我没有自由移动鼠标,只是保持在0,0左右)如果我把睡眠(100)最后,它的工作非常一致,但每10秒钟我的鼠标会再次停留在0,0,我睡得越多,这种情况就越少,但为什么呢?

在Visual Studio中

编辑控制台应用

1 个答案:

答案 0 :(得分:0)

请参阅GetAsyncKeyState

的文档
  

返回值

     

类型:简短

     

如果函数成功,则返回值指定是否为键   自上次调用GetAsyncKeyState以来是否被按下,以及是否   密钥当前上升或下降。如果设置了最高位,则   key为down,如果设置了最低有效位,则键为   在上一次调用GetAsyncKeyState之后按下。但是,你   不应该依赖这最后的行为;有关更多信息,请参阅   备注

示例

if (GetAsyncKeyState('W') & 0x8000)
{
    std::cout << "W key pressed\n";
}

SetCursorPos(0,0)将光标移动到左上角,而SetCursorPos(p.x, p.y)将光标移回到调用GetCursorPos时的位置。您将看不到鼠标位置的任何变化。

在控制台程序中使用这些WinAPI函数并不常见。