Winapi 如何通过程序发送硬件级键盘输入?

Winapi 如何通过程序发送硬件级键盘输入?,winapi,keyboard-events,Winapi,Keyboard Events,我一直在使用命令行进行键盘输入。然而,我们需要一些可以发送硬件级输入的东西,就像真正的键盘一样 有什么适合我的目的吗 我使用Windows作为操作系统。我曾经使用SendInput控制游戏角色。游戏(冰塔?)使用的是directx输入系统(我想?),不知何故它忽略了keybd_事件调用,但这种方法有效。我不知道你需要有多接近硬件,但这是我的窍门。我使用了虚拟钥匙代码,但将它们转换成扫描代码来回答这个问题。 ui按键盘扫描(WORD扫描代码) { 输入[1]={0}; 输入[0]。类型=输入\键

我一直在使用命令行进行键盘输入。然而,我们需要一些可以发送硬件级输入的东西,就像真正的键盘一样

有什么适合我的目的吗


我使用Windows作为操作系统。

我曾经使用SendInput控制游戏角色。游戏(冰塔?)使用的是directx输入系统(我想?),不知何故它忽略了keybd_事件调用,但这种方法有效。我不知道你需要有多接近硬件,但这是我的窍门。我使用了虚拟钥匙代码,但将它们转换成扫描代码来回答这个问题。

ui按键盘扫描(WORD扫描代码)
{
输入[1]={0};
输入[0]。类型=输入\键盘;
输入[0]。ki.wVk=NULL;
输入[0]。ki.wScan=scanCode;
输入[0]。ki.dwFlags=KEYEVENTF_扫描码;
UINT ret=SendInput(1,input,sizeof(input));
返回ret;
}
UINT释放键扫描(字扫描代码)
{
输入[1]={0};
输入[0]。类型=输入\键盘;
输入[0]。ki.wVk=NULL;
输入[0]。ki.wScan=scanCode;
输入[0]。ki.dwFlags=KEYEVENTF_SCANCODE | KEYEVENTF_KEYUP;
UINT ret=SendInput(1,input,sizeof(input));
返回ret;
}
要模拟新闻发布,您可以按顺序使用它们(或者您可以为使用相同结构的新闻发布创建单独的功能)

字扫描码空间=0x39;
按KeyScan(扫描代码空间);
ReleaseKeyScan(扫描代码空间)
您可以使用从虚拟密钥代码获取扫描代码。

keybd\u event()
已弃用,请改用

SendInput()
将其模拟事件发布到硬件驱动程序将其事件发布到的同一队列,如Raymond Chen博客中的下图所示:


C还是C++?他们是两个不同的人languages@formerlyknownas_463035818隐马尔可夫模型。。我的编码风格可能接近C,但我不介意C++编辑您的问题,以便其他人可以得到您的答案issue@Athira我以前从未来过这里。你的意思是我应该添加更多的标签吗?使用准确的标签,并尝试添加您尝试过的内容和您遇到的问题