gpt4 book ai didi

c++ - keybd_event 无法正常工作 =(

转载 作者:太空狗 更新时间:2023-10-29 21:08:44 25 4
gpt4 key购买 nike

我无法让它正常工作。这应该按左键 1 秒,然后等待 10 秒,然后按右键 1 秒,依此类推:

keybd_event(0x25, 0xCB, 0, 0);  // press left
cout << "Ldown\n"; // so i know it worked

Sleep(1000); // hold it for 1sec
keybd_event(0x25, 0xCB, KEYEVENTF_KEYUP, 0);// let go of the key
cout << "Lup\n"; // so i know i let go
Sleep(10000); // Sleep for 10secs

keybd_event(0x27, 0xCD, 0, 0); // press right
cout << "Rdown\n"; // so i know i pressed right
Sleep(1000); // sleep 1sec
keybd_event(0x27, 0xCD, KEYEVENTF_KEYUP, 0);// let go of the key
cout << "Rdown\n"; // so i know i let go.

这是一个循环,但它不会做任何事情 :( 除非我在松开键之前关闭程序,否则它将一直按住键直到我再次按下该键。

我知道如果您愿意,您可以只使用一个 key 代码,但我需要同时使用两者。

那我错过了什么?

最佳答案

代码似乎对我有用。我稍微清理了一下(没有魔数(Magic Number)!使用 MapVirtualKey、辅助函数等):

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

// for key pushing
BYTE scan_code(DWORD pKey)
{
const DWORD result = MapVirtualKey(pKey, MAPVK_VK_TO_VSC);

return static_cast<BYTE>(result);
}

void press_key(DWORD pKey)
{
keybd_event(static_cast<BYTE>(pKey), scan_code(pKey), 0, 0);
}

void release_key(DWORD pKey)
{
keybd_event(static_cast<BYTE>(pKey), scan_code(pKey), KEYEVENTF_KEYUP, 0);
}

// for testing
#define PRESS(x) press_key(x); std::cout << "Press: " #x << std::endl
#define RELEASE(x) release_key(x); std::cout << "Release: " #x << std::endl

// test
int main(void)
{
for (;;)
{
PRESS(VK_LEFT);
Sleep(10); // hold it for 1/100'th of a second

RELEASE(VK_LEFT);
Sleep(1000); // wait for a second

PRESS(VK_RIGHT);
Sleep(10); // hold it for 1/100'th of a second

RELEASE(VK_RIGHT);
Sleep(1000); // wait for a second
}
}

我通过打开记事本进行测试,输入一堆字符,然后运行程序。插入符号来回移动。你如何测试它?

关于c++ - keybd_event 无法正常工作 =(,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2564702/

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