system wide keyboard and mouse hooks
-
Somehting like this.... In your header file static LRESULT CALLBACK KeyboardHook (int nCode, WORD wParam, DWORD lParam ); static LRESULT CALLBACK MouseHook(int nCode, WORD wParam, DWORD lParam); In your source file LRESULT CALLBACK CClientDlg::KeyboardHook (int nCode, WORD wParam, DWORD lParam ) { if ( nCode >= 0 ) { // WHAT YOU WANT IT TO DO } return (int)CallNextHookEx(hHookKB, nCode, wParam, lParam); } LRESULT CALLBACK CClientDlg::MouseHook (int nCode, WORD wParam, DWORD lParam ) { mousecnt++; if ( nCode >= 0 ) { // WHAT DO YOU WANT IT TO DO } return (int)CallNextHookEx(hHookM, nCode, wParam, lParam); } In your initdialog or constructor hHookKB= (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardHook, 0,GetCurrentThreadId()); hHookM= (HHOOK)SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseHook, 0,GetCurrentThreadId());
-
Somehting like this.... In your header file static LRESULT CALLBACK KeyboardHook (int nCode, WORD wParam, DWORD lParam ); static LRESULT CALLBACK MouseHook(int nCode, WORD wParam, DWORD lParam); In your source file LRESULT CALLBACK CClientDlg::KeyboardHook (int nCode, WORD wParam, DWORD lParam ) { if ( nCode >= 0 ) { // WHAT YOU WANT IT TO DO } return (int)CallNextHookEx(hHookKB, nCode, wParam, lParam); } LRESULT CALLBACK CClientDlg::MouseHook (int nCode, WORD wParam, DWORD lParam ) { mousecnt++; if ( nCode >= 0 ) { // WHAT DO YOU WANT IT TO DO } return (int)CallNextHookEx(hHookM, nCode, wParam, lParam); } In your initdialog or constructor hHookKB= (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)KeyboardHook, 0,GetCurrentThreadId()); hHookM= (HHOOK)SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseHook, 0,GetCurrentThreadId());
-
This works for dll's? Which I presume I will need to put this in to get the system wide hook?