我正在尝试按键将鼠标移动到屏幕上的其他位置,然后立即以非常快的速度(每秒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中编辑控制台应用
答案 0 :(得分:0)
返回值
类型:简短
如果函数成功,则返回值指定是否为键 自上次调用GetAsyncKeyState以来是否被按下,以及是否 密钥当前上升或下降。如果设置了最高位,则 key为down,如果设置了最低有效位,则键为 在上一次调用GetAsyncKeyState之后按下。但是,你 不应该依赖这最后的行为;有关更多信息,请参阅 备注
示例
if (GetAsyncKeyState('W') & 0x8000)
{
std::cout << "W key pressed\n";
}
SetCursorPos(0,0)
将光标移动到左上角,而SetCursorPos(p.x, p.y)
将光标移回到调用GetCursorPos
时的位置。您将看不到鼠标位置的任何变化。
在控制台程序中使用这些WinAPI函数并不常见。