代码实现全局消息钩子SetWindowsHookExA监视按键记录
简单的使用Windows提供的Hook API SetWindowsHookExA,实现弹窗提示每次按下的按键
步骤:
1.编写一个Dll调用SetWindowsHookExA,实现弹窗
2.编写一个exe调用LoadLibrary加载生成的Dll
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include<stdio.h> #include<windows.h> HHOOK shook; LRESULT WINAPI keyboard(int nCode,WPARAM wParam,LPARAM lParam); BOOL APIENTRY DllMain( HINSTANCE hModule,DWORD ul_reason_for_call,LPVOID lpReserved ) { switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH: { shook = SetWindowsHookExA(WH_KEYBOARD,keyboard,hModule,0); } case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } LRESULT __stdcall keyboard(int nCode,WPARAM wParam,LPARAM lParam) { if(nCode >=0) { if(!(lParam & 0x80000000)) { char tcKey[MAX_PATH] = {0}; GetKeyNameTextA(lParam,tcKey,MAX_PATH); MessageBoxA(NULL,tcKey,tcKey,MB_OK); return CallNextHookEx(shook,nCode,wParam,lParam); } } else return CallNextHookEx(shook,nCode,wParam,lParam); }
|
1 2 3 4 5 6 7
| #include<stdio.h> #include<windows.h> void main() { LoadLibraryA("sethook.dll"); getchar(); }
|