#define WIN32_LEAN_AND_MEAN #include #include "keyhook.h" HINSTANCE ghInst; HWND hWnd; HHOOK hHook; BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch(ul_reason_for_call) { case DLL_PROCESS_ATTACH: ghInst = (HINSTANCE)hModule; LPCTSTR szWindowClass = TEXT(CLASS_NAME); LPCTSTR szTitle = TEXT(TITLE_NAME); if((hWnd = FindWindow(szWindowClass, szTitle)) == NULL){ return TRUE; } break; } return TRUE; } EXPORT LRESULT CALLBACK MyHookProc(int nCode, WPARAM wParam, LPARAM lParam) { if(nCode == HC_ACTION){ SendMessage(hWnd, WM_KEYHOOK, (WPARAM)wParam, (LPARAM)lParam); } return (CallNextHookEx(NULL, nCode, wParam, lParam)); } EXPORT BOOL MySetHook(void) { if((hHook = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)MyHookProc, ghInst, 0)) == NULL){ return TRUE; } return FALSE; } EXPORT BOOL MyEndHook(void) { if(UnhookWindowsHookEx(hHook) == FALSE){ return TRUE; } return FALSE; }