Thursday, March 02, 2006

讀取任意視窗下使用者的鍵盤輸入(熱鍵 Alt+D的實作)

程式設計知識:
讀取任意視窗下使用者的鍵盤輸入(熱鍵 Alt+D的實作)

by 井民全

關鍵片段: GetKeyState

Knowledge Requirement: multi-thread Windows progrmaming

1. Windows 下啟動一個 working thread 主要指令
AfxBeginThread(Listen_AltD_Key_ThreadFun,NULL); // 啟動 Alt+D 按鍵的 Listen Thread

2. thread 主程式 (隨時監控使用者是否按下 Alt+D, 若使用者按下則自動將 Help 視窗帶到前面來)

// Thread function 的部分
UINT Listen_AltD_Key_ThreadFun(LPVOID LParam){
WINDOWINFO info;
do{
SHORT AltState=GetKeyState(VK_MENU); // Alt 的狀態
bool bAltDown=(AltState & 0x8000) > 0;

SHORT LKeyState=GetKeyState(0x4C); // L Virtual Key 的狀態
bool bLKeyDown=(LKeyState & 0x8000) > 0;

// 當兩個 Key 同時被按下的時的偵測
if(bAltDown && bLKeyDown){
int kk=0; // <===========
kk++;
}
SleepEx(100,true);
}while(true);
return(0);
}

// end of 隨時監控使用者是否按下 Alt+D

進一步資料: ms-help://MS.MSDNQTR.2004JAN.1033/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/getkeystate.htm

0 Comments:

Post a Comment

<< Home