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

Moving mouse position then back to beginning position

本文关键字:位置 开始 鼠标 移动 然后      更新时间:2023-10-16

我正试图使键移动鼠标到屏幕上的不同位置,然后立即返回,以非常快的速度(每秒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左右)如果我把Sleep(100)放在最后,然后它的工作非常一致,但每~10秒我的鼠标会再次卡在0,0,我把睡眠越少发生这种情况,但为什么?

edit console app in Visual Studio

查看GetAsyncKeyState的文档

返回值

类型:短

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

例子
if (GetAsyncKeyState('W') & 0x8000)
{
    std::cout << "W key pressedn";
}

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

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