日志记录钩子的问题
刚开始看这个hook,看罗云彬时看到日志钩子时间键盘hook,我就简单实验下,目的是按了“C”键弹出一个对话框,可是我
试的时候对话框弹出了一堆,我实在是不明白,我用局部键盘钩子和全局键盘钩子也试了下,没有问题,就用这
WH_JOURNALRECORD有问题,下面是实验代码
#include <windows.h>#include "resource.h"HHOOK hHook;HWND hWinMain;LRESULT CALLBACK ProcHookMain(int iCode, WPARAM wParam, LPARAM lParam){ EVENTMSG * lpEventmsg; CallNextHookEx(hHook, iCode, wParam, lParam); if(iCode == HC_ACTION) { lpEventmsg = (EVENTMSG *)lParam; if(lpEventmsg->message == WM_KEYDOWN) { if((lpEventmsg->paramL & 0xff) == 'C') MessageBox(hWinMain, TEXT("Test"), TEXT("Test"), MB_OK); } } return 0;}BOOL CALLBACK ProcDlgMain(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam){ HINSTANCE hInstance; switch(wMsg) { case WM_CLOSE: UnhookWindowsHookEx(hHook); EndDialog(hWnd, 0); return TRUE; case WM_INITDIALOG: hWinMain = hWnd; hInstance = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); hHook = SetWindowsHookEx(WH_JOURNALRECORD, ProcHookMain, hInstance, 0); if(!hHook) { MessageBox(hWnd, TEXT("Hook failure!"), TEXT("Error"), MB_OK | MB_ICONERROR); EndDialog(hWnd, 0); } return TRUE; } return FALSE;}WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iShowCmd){ DialogBoxParam(hInstance, "Dlg", NULL, ProcDlgMain, 0); return 0;}//Microsoft Developer Studio generated resource script.//#include "resource.h"#define APSTUDIO_READONLY_SYMBOLS///////////////////////////////////////////////////////////////////////////////// Generated from the TEXTINCLUDE 2 resource.//#include "afxres.h"/////////////////////////////////////////////////////////////////////////////#undef APSTUDIO_READONLY_SYMBOLS/////////////////////////////////////////////////////////////////////////////// Chinese (P.R.C.) resources#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)#ifdef _WIN32LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED#pragma code_page(936)#endif //_WIN32#ifdef APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// TEXTINCLUDE//1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0"END2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0"END3 TEXTINCLUDE DISCARDABLE BEGIN "\r\n" "\0"END#endif // APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// Dialog//DLG DIALOG DISCARDABLE 205, 150, 86, 62STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENUCAPTION "Test"FONT 10, "System"BEGINEND///////////////////////////////////////////////////////////////////////////////// DESIGNINFO//#ifdef APSTUDIO_INVOKEDGUIDELINES DESIGNINFO DISCARDABLE BEGIN "DLG", DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 79 TOPMARGIN, 7 BOTTOMMARGIN, 55 ENDEND#endif // APSTUDIO_INVOKED#endif // Chinese (P.R.C.) resources/////////////////////////////////////////////////////////////////////////////#ifndef APSTUDIO_INVOKED///////////////////////////////////////////////////////////////////////////////// Generated from the TEXTINCLUDE 3 resource.///////////////////////////////////////////////////////////////////////////////#endif // not APSTUDIO_INVOKED