今天发现在游戏中,keybd_event不能使用,结果发现游戏是使用directinput实现读取键盘的,关键还是扫描码的问题,我抄了一段网上找来的代码,经测试有效:
#include <iostream>
#include <Windows.h>
BYTE scan_code(DWORD pKey)
{
const DWORD result = MapVirtualKey(pKey, MAPVK_VK_TO_VSC);
return static_cast<BYTE>(result);
}
void W_Down()
{
keybd_event('W', scan_code('W'), 0, 0);
}
void W_Up()
{
keybd_event('W', scan_code('W'), KEYEVENTF_KEYUP, 0);
}
int main()
{
std::cout << "Hello." << std::endl;
Sleep(2000);
std::cout << "Start." << std::endl;
W_Down();
Sleep(5000);
W_Up();
return 0;
}