大家好
今天给大家带来:kd(按键按下) 及其类型
先看一个网址:点这里
问题就来了:为什么要用kd???
其实,kd是
#include
的一种函数
原形为:
((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
用define就会简单很多。
例如:
#define kd(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
而它的用法与虚拟按键有关(至于定义不用去管)
(虚拟按键大全)
常量名 对应按键
————————————————————————
VK_LBUTTON 鼠标左键
VK_RBUTTON 鼠标右键
VK_CANCEL Ctrl+Break
VK_MBUTTON 鼠标中键
VK_BACK Backspace键
VK_TAB Tab 键
VK_RETURN 回车键
VK_SHIFT Shift键
VK_CONTROL Ctrl键
VK_MENU Alt键
VK_PAUSE Pause键
VK_CAPITAL Caps Lock键
VK_ESCAPE Esc键
VK_SPACE 空格键
VK_PRIOR Page Up键
VK_NEXT Page Down键
VK_END End键
VK_HOME Home键
VK_LEFT 左箭头键
VK_UP 上箭头键
VK_RIGHT 右箭头键
VK_DOWN 下箭头键
VK_SNAPSHOT Print Screen键
VK_Insert Insert键
VK_Delete Delete键
‘0’ – ‘9’ 数字0-9
‘A’ – ‘Z’ 字母A – Z
VK_LWIN 左WinKey(104键盘才有)
VK_RWIN 右WinKey(104键盘才有)
VK_APPS AppsKey(104键盘才有)
VK_NUMPAD0 小键盘0键
VK_NUMPAD1 小键盘1键
VK_NUMPAD2 小键盘2键
VK_NUMPAD3 小键盘3键
VK_NUMPAD4 小键盘4键
VK_NUMPAD5 小键盘5键
VK_NUMPAD6 小键盘6键
VK_NUMPAD7 小键盘7键
VK_NUMPAD8 小键盘8键
VK_NUMPAD9 小键盘9键
VK_F1 – VK_F24 功能键F1–F24
VK_NUMLOCK Num Lock键
VK_SCROLL Scroll Lock键
所以,用法应为
#include
#include
using namespace std;
#define kd(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
int main()
{
while(1)
{
//想按下1:
if(kd(VK_NUMPAD1)||kd('1')) cout
但问题来了:运行后发现,按一次事半功倍,会出现很多个1 / left
所以,就要用一个简单的方法:Sleep() //停顿,照样在windows.h里
改后代码为
#include
#include
using namespace std;
#define kd(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
int main()
{
while(1)
{
//想按下1:
if(kd(VK_NUMPAD1)||kd('1')) cout
那问题来了,讲了这么多,为什么要用kd还是没有讲
那让我们看两段代码的比较
#include
#include
using namespace std;
#define kd(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
int main()
{
while(1)
{
if(kd(VK_NUMPAD1)||kd('1')) cout
与
#include
#include
using namespace std;
#define kd(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000) ? 1:0)
int main()
{
while(1)
{
char c;
c=getchar();
if(c=='1') cout
请大家按住1,时不时按下2
发现什么了吗?????????????????????????
kd可以一时间判断多个键并且没有停顿
getchar一次只能判断一个键而且还有停顿
是不是很影响玩多人游戏???
所以,看ZQK13问的问题:
是不是感觉与kd没什么关系???
好吧,是没有关系
妙呀!!!
—————————————————不怎么华丽的分界线—————————————————
虚拟按键其他类型(都在windows.h里面)
1.模拟按下某键
keybd_event(VK_???,0,0,0); //按下??键
2.模拟放开某键
keybd_event(VK_???,0,KEYEVENTF_KEYUP,0); //放开??键
3.按下弹起某键
1&2
4.组合键
n*3
举个栗子
void ctrl_v() { down(VK_CONTROL);//按下Ctrl键 press(VK_V);//按下V键,并放开 up(VK_CONTROL);//放开V键 }
像这样,编个坑人小游戏就不是问题了
都看到这里了,点个赞呗!!!!
参考文章: C/C++ 模拟键盘操作(一)_c++ 键盘按下_折竹丶的博客-CSDN博客
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net