| 键盘事件的挂钩监控原理及其应用 |
| 当前位置: 论文资料 >> 计算机论文 >> 计算机应用 >> 键盘事件的挂钩监控原理及其应用 | ||
| 键盘事件的挂钩监控原理及其应用 | ||||
|
int WINAPI InstallFilter(BOOL nCode) { if (InitCalled==0) return (-1); if (nCode==TRUE) { hKeyHook=SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)lpfnKeyHook,hInstance,0); HookStates=TRUE; } else { UnhookWindowsHookEx(hKeyHook); HookStates=FALSE; } return(0); } LRESULT CALLBACK KeyHook(int nCode,WORD wParam,DWORD lParam) { static BOOL msflag=FALSE; if(nCode>=0) { if(HookStates==TRUE) { if((wParam==0xff)|| //WIN3.X下按键值 (wParam==0x5b)||(wParam==0x5c)){//WIN95下按键值 if((i==0x15b)||(i==0x15c)){ //按键按下处理 msflag=TRUE; PostMessage(hWndMain,0x7fff,0x1,0x3L); } else if((i==0xc15b)||(i==0xc15c)){//按键抬起处理 msflag=FALSE; PostMessage(hWndMain,0x7fff,0x2,0x3L); } } } } return((int)CallNextHookEx (hKeyHook,nCode,wParam,lParam)); } 该程序的主要功能是监控键盘按键消息,将两个特殊按键Micro按下和抬起消息转换 成自定义类型的消息,并将自定义消息发送给应用程序主窗口函数。 2、在应用程序主函数中建立窗口后,调用InitHooksDll()函数来初始化动态链接 库,并将应用程序主窗口句柄传递给链接库,然后调用InstallFilter()函数挂接键 盘事件监控回调函数。 InitHooksDll(hIMEWnd); //初始化DLL InstallFilter(TRUE); //安装键盘回调函数 3、在应用程序主窗口函数处理自定义消息时,保存Micro按键的状态,供组合按键 处理时判断使用。 switch (iMessage) { case 0x7fff: //自定义消息类型 if(lParam==0x3L) {//设置Micro键的状态 if(wParam==0x1) MicroFlag=TRUE; else if(wParam==0x2) MicroFlag=FALSE; } break; 4、在进行按键组合处理时,首先判断Micro键是否按下,然后再进行其它按键的判 断处理。 case WM_KEYDOWN: // 按键按下处理 if(MicroFlag==TRUE) { //Micro键按下 if((BYTE)HIBYTE(wParam)==0x5b) { //Micro+"["组合键 ......//按键功能处理 } else if((BYTE)HIBYTE(wParam)==0x5d) { //Micro+"]"组合键 ......//按键功能处理 } } break; 5、当应用程序退出时应注意下载键盘监控函数,即调用InstallFilter(FALSE)函 数一次。 6、利用本文提供的方法设置自己的应用程序功能按键,在保证程序功能按键不会 与其它系统发生冲突的同时,有效地利用了系统中现有资源,而且在实现应用程序 功能的同时灵活应用了系统中提供的各种功能调用。 |
||||
|
|
||||
| 相关文章列表: | |||