gpt4 book ai didi

c++ - 使用 GetAsyncKeyState() 的关键监听器/记录器

转载 作者:行者123 更新时间:2023-11-28 08:14:53 26 4
gpt4 key购买 nike

我看到很多人能够使用 for 循环来确定按下的键的值,例如,它将是 GetAsyncKeyState(41),因此他们可以轻松地使用循环,但由于某种原因它只能工作对我来说,如果我输入 GetAsyncKeyState(0x41) 等,我能做些什么吗?这样我就可以遍历它,而不必单独输入每个值?

int main()
{
while(!GetAsyncKeyState(VK_F8))
{
for(int i=65; i<90; i++)
{

if(GetAsyncKeyState(i))
{
log << "HELLO DER";
}
Sleep(200);
}
}
}

最佳答案

410x41 是两个完全不同的值。第二个,0x41 是十进制值 65 的十六进制,它是“A”的 ASCII 码。但我猜你已经知道这一点,因为你将 i 初始化为 65(大写 ASCII 字母和 VK 代码匹配)。

无论如何,假设您正在尝试记录按键操作,您的代码在某种程度上几乎可以正常工作。长话短说,您的循环延迟方式太长了,它遍历每个字符需要 200 毫秒 * 26 = 5.2 秒。因此,如果您在 5.2 秒内键入“AAAB”,则只会注册“AB”。但是,如果延迟时间太短,那么您可能会多次注册新闻。

阅读documentation for GetAsyncKeyState了解更多信息。

无论如何,我可能会选择上面文档的备注中提到的不同功能,例如 GetKeyboardState ,因为您通常会使用类似 GetAsyncKeyState 的方法来注册热键或类似的按键操作。 IE。 GetAsyncKeyState 非常适合想知道某个键是否被按下,而不是多少次,按下的顺序等。一个循环就像你所拥有的那样真的很容易出问题。

此外,不要做任何愚蠢的记录键...

编辑:实际上 GetKeyboardState 仍然不是一个很好的解决方案。使用 SetWindowsHookEx 设置键盘 Hook 将是一个更好的选择。您可以使用 WH_KEYBOARD_LL Hook 类型来设置带有 LowLevelKeyboardProc 的低级键盘 Hook 。回调。

我做了一些谷歌搜索,发现有一个开源宏程序,AutoHotkey它使用了这种方法,我想如果您愿意,可以看一下。

关于c++ - 使用 GetAsyncKeyState() 的关键监听器/记录器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7988161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com