niewiem czemu hook mi nie dziala, oto jego kod:
hookdll.dll
#include <windows.h>
static HHOOK HookHandle;
LRESULT CALLBACK KeybProc(int nCode,WPARAM wParam,LPARAM lParam);
BOOL APIENTRY DllMain(HINSTANCE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
static HINSTANCE handDLL=hModule;
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
HookHandle = SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeybProc,handDLL,0);
if(!HookHandle) MessageBox(NULL,"Nie mozna zaladowac pliku hookdll.dll \n",
"Info",MB_OK | MB_ICONERROR);
else
MessageBox(NULL,"Ladowanie powiodlo sie","Info",MB_OK);
break;
case DLL_PROCESS_DETACH:
UnhookWindowsHookEx(HookHandle);
break;
}
return true;
}
LRESULT __declspec(dllexport)__stdcall CALLBACK KeybProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0)
return CallNextHookEx(HookHandle, nCode, wParam, lParam);
if(wParam) MessageBox(NULL,"jakis klawisz","Info",MB_OK);
return CallNextHookEx(HookHandle, nCode, wParam, lParam);
}
a to kod z programu, ktory laduje dll'a:
...
LRESULT CALLBACK ProcOkna(HWND uchwyt,UINT komunikat,WPARAM wParam,LPARAM lParam)
{
switch(komunikat)
{
case WM_CREATE:
if(handDLL=LoadLibrary((LPCTSTR) "hookdll.dll")) MessageBox(NULL,"Zaladowany","OK",MB_OK);
break;
case WM_DESTROY:
FreeLibrary(handDLL);
PostQuitMessage(0);
break;
...
zanim okno programu mi sie wyswietli to pojawiac sie messagebox, czyli dll jest ladowany, ale potem niezczytuje mi klawiszy:/ mzoe ktos pomoze? thx