Try this:
HHOOK __hhook = 0;
LRESULT FAR PASCAL KeyProc(int nCode, WPARAM wParam, LPARAM lParam)
{
return CallNextHookEx(__hhook,nCode,wParam,lParam);
}
int FAR PASCAL DllMain(HANDLE hModule,unsigned long r,void* p)
{
switch(r)
{
case DLL_PROCESS_ATTACH:
__hhook = SetWindowsHookEx( WH_KEYBOARD_LL,KeyProc,hModule,0);
break;
case DLL_PROCESS_DETACH:
UnhookWindowsHookEx(__hhook);
break;
case DLL_THREAD_ATTACH: break;
case DLL_THREAD_DETACH: break;
}
return 1;
}
int FAR PASCAL WinMain(HINSTANCE h,HINSTANCE p,LPSTR c,int sw)
{
HINSTANCE hdll = LoadLibrary(TEXT("key.dll"));
MessageBox(0,__TEXT("wait..."),__TEXT("keyhook"),MB_OK);
FreeLibrary(hdll);
return 1;
}
You have nothing to export only load the DLL. The function is injected to every process and DllMain is called. But remember the hook will stay until windows shut down. Otherwise you should send a signal (i.e. an event object or a special keystoke) to unkook and terminate.
Good luck.