C ++:如果按下Windows,模拟按键并保持按键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++:如果按下Windows,模拟按键并保持按键相关的知识,希望对你有一定的参考价值。
我有这个C ++函数接收虚拟密钥并按下/释放密钥:
void SendKey (WORD wVk, bool press) {
keybd_event(wVk, 0, press? 0 : KEYEVENTF_KEYUP, 0);
}
但它只按键1次,而不是像我预期的那样。
我正在构建一个JoyPad模拟,所以,我需要分别配置KeyDown和KeyUp,这是一个小的C ++进程,它通过cmd读取密钥和类型(Down,Press或Release):
#define WINVER 0x0500
#include <windows.h>
#include <iostream>
using namespace std;
void SendKey (WORD wVk, bool press) {
keybd_event(wVk, 0, press? 0 : KEYEVENTF_KEYUP, 0);
}
void PressKey (WORD wVk) {
SendKey(wVk, true);
Sleep(30);
SendKey(wVk, false);
}
int main() {
int key;
char type;
while(true) {
cin >> key;
cin >> type;
if(key == 0) break;
if(type == 'd') SendKey((WORD) key, true);
if(type == 'r') SendKey((WORD) key, false);
if(type == 'p') PressKey((WORD) key);
}
return 0;
}
非常感谢,如果有人建造了类似的东西,请告诉我。
答案
你将不得不为你想要的每个重复重复发送一个关键事件,这不会自动发生。就像真正的键盘驱动程序在初始延迟后发送重复的键事件一样。
以上是关于C ++:如果按下Windows,模拟按键并保持按键的主要内容,如果未能解决你的问题,请参考以下文章