I have modified the C++ code from Paul DiLascia’s MSJ
article to plain vanilla C code. Seems like the hook
is not getting installed properly. i think i’m missing
something obvious here.
kudrt
ps : the dll is suppose to install a system wide mouse
and keyboard hook.
here goes …
#include “windows.h”
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE = FILE;
#endif
#define DLLEXPORT __declspec(dllexport)
#pragma data_seg (“.InputInfo”)
HHOOK HookKbd = NULL;
HHOOK HookMouse = NULL;
DWORD LastInputTick = 0;
//HANDLE ghInst;
#pragma data_seg ()
BOOL APIENTRY DllMain(HANDLE hInst, DWORD
ul_reason_being_called, LPVOID lpReserved)
{
return TRUE;
}
LRESULT CALLBACK MyKbdHook(int code, WPARAM wParam,
LPARAM lParam)
{
//_asm int 3
if (code==HC_ACTION) {
LastInputTick = GetTickCount();
}
return CallNextHookEx(HookKbd, code, wParam, lParam);
}
LRESULT CALLBACK MyMouseHook(int code, WPARAM wParam,
LPARAM lParam)
{
//_asm int 3
if (code==HC_ACTION) {
LastInputTick = GetTickCount();
}
return CallNextHookEx(HookMouse, code, wParam,
lParam);
}
BOOL DLLEXPORT IdleUIInit( void )
{
//_asm int 3
if (HookKbd == NULL) {
HINSTANCE hInst = GetModuleHandle(“inputnfo.dll”);
HookKbd = SetWindowsHookEx(WH_KEYBOARD,
(HOOKPROC)MyKbdHook, hInst, 0);
HookMouse = SetWindowsHookEx(WH_MOUSE,
(HOOKPROC)MyMouseHook, hInst, 0);
LastInputTick = GetTickCount();
}
return TRUE;
}
DWORD DLLEXPORT IdleUIGetLastInputTime( void )
{
return LastInputTick;
}
void DLLEXPORT IdleUITerm( void )
{
BOOL bRet1 = UnhookWindowsHookEx(HookKbd);
BOOL bRet2 = UnhookWindowsHookEx(HookMouse);
}
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com