Win32命令行应用,+ReadConsoleInput()得到键盘VK_CODE

来源:互联网 发布:数据采集系统作用 编辑:程序博客网 时间:2024/05/12 20:27
BOOL ReadConsoleInput(  HANDLE hConsoleInput, //输入句柄  PINPUT_RECORD lpBuffer, //指向INPUT_RECORD结构体(数组)的指针  DWORD nLength, //上面那个结构体的大小  LPDWORD lpNumberOfEventsRead //实际读入输入内容的个数);
#pragma once#include <Windows.h>class GohanConsoleHelper{    HANDLE _hIn;    HANDLE _hOut;    INPUT_RECORD _InRec;    DWORD _NumRead;public:    WORD VKey;    GohanConsoleHelper(void){        _hIn = GetStdHandle(STD_INPUT_HANDLE);        _hOut = GetStdHandle(STD_OUTPUT_HANDLE);        VKey=0;    }    bool ReadOneInput()    {        return 0!=ReadConsoleInput(_hIn,&_InRec,1,&_NumRead);    }    bool ReadOneInput(INPUT_RECORD& InRec)    {        return 0!=ReadConsoleInput(_hIn,&InRec,1,&_NumRead);    }    DWORD ReadKeyDown()    {        if(!ReadConsoleInput(_hIn,&_InRec,1,&_NumRead))            return 0;        if(_InRec.EventType!=KEY_EVENT)            return 0;        if(_InRec.Event.KeyEvent.bKeyDown > 0)            return 0;        VKey = _InRec.Event.KeyEvent.wVirtualKeyCode;        return VKey;    }    DWORD ReadKeyPush()    {        if(!ReadConsoleInput(_hIn,&_InRec,1,&_NumRead))            return 0;        if(_InRec.EventType!=KEY_EVENT)            return 0;        if(_InRec.Event.KeyEvent.bKeyDown == 0)            return 0;        VKey = _InRec.Event.KeyEvent.wVirtualKeyCode;        return VKey;    }public:    ~GohanConsoleHelper(void){}};
#include <windows.h>#include <iostream>#include "GohanConsoleHelper.h"using namespace std;int main(){    GohanConsoleHelper gch;    while (true)    {        if(gch.ReadKeyPush()!=0) //使用ReadKeyDown()捕获按键弹起的VK_CODE        {            if(gch.VKey != VK_ESCAPE)                cout<<"VK_CODE == "<<gch.VKey<<endl;            else {                cout<<"Bye~~"<<endl;                break;            }        }    }    return 0;}
原创粉丝点击