犯罪嫌疑人X
WINDOW下可进行挂接的过滤函数有WH_CALLWNDPROC,WH_CBT ,WH_DEBUG,WH_GETMESSAGE ,WH_HARDWARE ,WH_JOURNALPLAYBACK ,WH_JOURNALRECORD ,WH_MOUSE ,WH_MSGFILTER ,WH_SYSMSGFILTER ,WH_KEYBOARD键盘过滤函数 WH_KEYBOARD 是最常用最有用。利用函数SetWindowsHookEx()将其挂接在函数链首。拦+截到消息是否传递给函 数链的下一个函数是由每个具体函数功能确定,用API函数的CallNextHookEx()来传递。挂接函数是全局的,那么必须将其放在一个.DLL 动态链接库中。键盘挂钩函数为例:int FAR PASCAL KeyboardProc( int nCode,WORD wParam,DWORD lParam)其中KeyboardProc为定义挂接函数名,该函数必须在模块定义文件中利用 EXPORTS命 令进行说明;nCode决定挂接函数是否对当前消息进行处理;wParam和lParam为具体 的消息内容。卸钩 调用一次 UnhookWindowsHookEx(iProc)动态链接库调用有3种方法。1.在DEF定义文件中直接用函数名或序号说明:EXPORTS WEP @1 RESIDENTNAME InitHooksDll@2 InstallFilter@3 KeyboardProc@4用序号说明格式为:链接库名.函数名(如本例中说明方法为KEYDLL.KeyboardProc)。2.在应用程序中利用函数直接调用:首先在应用程序中利用LoadLibrary(LPSTR "链接库名")将动态链接库装入,并取得 装载库模块句柄hInst,然后直接利用GetProcAddress(HINSTANCE hInst,LPSTR "函 数过程名")获取函数地址,然后直接调用该地址即可,程序结束前利用函数 FreeLibrary( )释放装入的动态链接库即可。3.利用输入库.LIB方法 利用IMPLIB.EXE程序在建立动态链接库的同时建立相应的输入库.LIB,然后直接在 项目文件中增加该输入库。