close

可以攔截鍵盤上的按鍵(例: esc、space、enter、tab、Caps Lock、Ctrl、F4、......)或滑鼠移動、點擊的事件

在這裡我使用攔截鍵盤按鍵來當作示範,所以使用到KEY_EVENT(其他的事件攔截請點選下面的INPUT_RECORD連結)

 

會使用到windows.h內的幾個Method,建議先稍微了解一下

GetStdHandle

GetConsoleMode

SetConsoleMode

ReadConsoleInput

INPUT_RECORD

 


#include <stdio.h>
#include <windows.h>

int main()
{
    HANDLE handle;
    DWORD cnt;//儲存出入
    DWORD mode;//Console Mode
    INPUT_RECORD input;

    handle = GetStdHandle(STD_INPUT_HANDLE);//先取得基本輸入Handle
    GetConsoleMode(handle, &mode);//得到基本輸入的Mode
    SetConsoleMode(handle, mode & ~ENABLE_LINE_INPUT);//設定基本輸入模式,其中~ENABLE_LINE_INPUT代表不用按下Enter也可動作

    while(ReadConsoleInput(handle, &input, 1, &cnt))//開始讀取使用者的動作
    {
        if(input.EventType == KEY_EVENT)
        {
            if(input.Event.KeyEvent.bKeyDown == TRUE)
            {
                if(input.Event.KeyEvent.wVirtualKeyCode == VK_CAPITAL)//大寫鎖定
                    printf("CAPITAL\n");
                else if (input.Event.KeyEvent.wVirtualKeyCode == VK_RETURN)//Enter按鍵
                    printf("Enter\n");
                else if (input.Event.KeyEvent.wVirtualKeyCode == VK_CONTROL)//Ctrl
                    printf("Ctrl\n");
                else if (input.Event.KeyEvent.wVirtualKeyCode == VK_F4)//F4
                    printf("F4\n");
                else if (input.Event.KeyEvent.wVirtualKeyCode == VK_TAB)//Tab
                    printf("Tab\n");
                else if (input.Event.KeyEvent.wVirtualKeyCode == VK_ESCAPE)//Esc
                    printf("Esc\n");
            }
        }
    }

    return 0;
}


 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Yang 的頭像
    Yang

    Yang的部落格(轉貼文章請註記來源)

    Yang 發表在 痞客邦 留言(0) 人氣()