BOOL far pascal zUnhookWindowsHook( int pp1, FARPROC pp2 ) { BOOL r; FARPROC fp ; SaveRegs(); /* ** Log IN Parameters (No Create/Destroy Checking Yet!) */ LogIn( (LPSTR)"APICALL:UnhookWindowsHook int+FARPROC+", pp1, pp2 ); fp = (FARPROC)HookFind( (void far *)pp2 ) ; if ( fp == NULL ) { /* Unhooking an unknown hook type */ fp = pp2; } /* ** Call the API! */ RestoreRegs(); GrovelDS(); r = UnhookWindowsHook(pp1,fp); UnGrovelDS(); SaveRegs(); /* ** Log Return Code & OUT Parameters (No Create/Destroy Checking Yet!) */ LogOut( (LPSTR)"APIRET:UnhookWindowsHook BOOL+++", r, (short)0, (short)0 ); RestoreRegs(); return( r ); }
LRESULT CALLBACK WndProcCallbackHook(INT nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION) { PCWPSTRUCT pCwpStruct = (PCWPSTRUCT)lParam; switch (pCwpStruct->message) { case MN_FINDMENUWINDOWFROMPOINT: if (!HookOnlyOnce) { HookOnlyOnce = TRUE; // Unhook the applied hook on WH_CALLWNDPROC if (UnhookWindowsHook(WH_CALLWNDPROC, WndProcCallbackHook)) { // set new address of lpfnWndProc callback function oldWndProc = (WNDPROC)SetWindowLongPtr(pCwpStruct->hwnd, GWL_WNDPROC, (ULONG_PTR)SubClassNewWndProc); } } break; default: break; } } return CallNextHookEx(0, nCode, wParam, lParam); }
bool AnimaMouseInteractor::Remove() { if (_installed == false) return false; // Rimuovo questo interactor dalla lista di interactor installati auto interactor = _installedInteractors.find(_windowId); if (interactor != _installedInteractors.end()) _installedInteractors.erase(interactor); UnhookWindowsHook(WH_CALLWNDPROC, WindowsProcCallback); UnhookWindowsHook(WH_GETMESSAGE, MessageProcCallback); _windowId = 0; _installed = false; return true; }
LRESULT CALLBACK HookCallback(int code, WPARAM wParam, LPARAM lParam) { #ifdef _M_X64 if (*(DWORD *)(lParam + 16) == 0x1EB && !HookCallbackClue) #else if (*(DWORD *)(lParam + 8) == 0x1EB && !HookCallbackClue) #endif { HookCallbackClue = 1; if (UnhookWindowsHook(WH_CALLWNDPROC, HookCallback)) { #ifdef _M_X64 lpPrevWndFunc = (WNDPROC)SetWindowLongPtr(*(HWND *)(lParam + 24), GWLP_WNDPROC, (ULONG_PTR)HookCallbackTwo); #else lpPrevWndFunc = (WNDPROC)SetWindowLongA(*(HWND *)(lParam + 12), GWLP_WNDPROC, (LONG)HookCallbackTwo); #endif } } return CallNextHookEx(0, code, wParam, lParam); }
BOOL PASCAL _Cover_UnhookWindowsHook( int nhook, FARPROC proc ) { return( UnhookWindowsHook( nhook, (FARPROC)RealProcAddr( proc ) ) ); }
int FAR PASCAL WEP( int nParameter) { fLoaded = FALSE; UnhookWindowsHook(WH_CBT, (HOOKPROC)CBTHookProc); UnhookWindowsHook(WH_KEYBOARD, (HOOKPROC)KBDHookProc); return(1); }