BOOL CRichEditNcBorder::Initialize(HWND hwndRichEdit) { if (hwndRichEdit) // hook { if (IsHooked()) return TRUE; // else if (HookWindow(hwndRichEdit)) { VerifyThemedBorderState(); return TRUE; } // else return FALSE; } // else unhook if (IsHooked()) return HookWindow(NULL); // else return TRUE; }
BOOL CWndPrompt::Initialize(HWND hWnd, LPCTSTR szPrompt, UINT nCheckMsg, LRESULT lRes, int nVertOffset) { ASSERT (hWnd); ASSERT (!IsHooked()); // ASSERT (szPrompt && *szPrompt); ASSERT (nCheckMsg); if (!IsHooked() && hWnd && szPrompt && *szPrompt && nCheckMsg) { if (HookWindow(hWnd)) { m_sPrompt = szPrompt; m_nCheckMsg = nCheckMsg; m_lCheckResult = lRes; m_sClass = CWinClasses::GetClass(hWnd); m_nVertOffset = max(nVertOffset, 0); if (WantPrompt()) Invalidate(); return TRUE; } } return FALSE; }
BOOL CShortcutManager::Release() { if (!IsHooked()) return TRUE; return HookWindow(NULL); }
NS_IMETHODIMP sbWindowMoveService::StopWatchingWindow(nsISupports *aWindow, sbIWindowMoveListener *aListener) { NS_ENSURE_ARG_POINTER(aWindow); NS_ENSURE_ARG_POINTER(aListener); NS_WARN_IF_FALSE(NS_IsMainThread(), "This service is MAIN THREAD ONLY!"); HWND windowHandle = NativeWindowFromNode::get(aWindow); NS_ENSURE_TRUE(windowHandle, NS_ERROR_INVALID_ARG); // Not hooked, nothing to do. if(!IsHooked(windowHandle)) { NS_WARNING("Attempting to unhook a window that was never hooked."); return NS_OK; } HANDLE propHandle = ::RemovePropW(windowHandle, PROP_WMS_INST); NS_WARN_IF_FALSE(propHandle == (HANDLE) this, "Removed property that didn't match what we should've set!"); HHOOK hookHandle = GetHookForWindow(windowHandle, mHooks); NS_ENSURE_TRUE(hookHandle, NS_ERROR_FAILURE); BOOL success = ::UnhookWindowsHookEx(hookHandle); NS_ENSURE_TRUE(success != 0, NS_ERROR_FAILURE); mHooks.erase(windowHandle); mListeners.erase(windowHandle); return NS_OK; }
void CWndPrompt::SetPrompt(LPCTSTR szPrompt, int nVertOffset) { ASSERT (IsHooked()); ASSERT (szPrompt && *szPrompt); if (IsHooked() && szPrompt && *szPrompt) { m_sPrompt = szPrompt; if (nVertOffset >= 0) m_nVertOffset = nVertOffset; if (WantPrompt()) Invalidate(); } }
InlineHook::~InlineHook() { LOG_DEBUG << "Destroying hook. 0x" << std::hex << m_hookAddress << " --> 0x" << std::hex << m_originalAddress; if (IsHooked()) { (void)RemoveImpl(); } }
BOOL CShortcutManager::Initialize(CWnd* pOwner, WORD wInvalidComb, WORD wFallbackModifiers) { if (wInvalidComb && !IsHooked()) { if (pOwner && HookWindow(*pOwner)) { m_wInvalidComb = wInvalidComb; m_wFallbackModifiers = wFallbackModifiers; //LoadSettings(); return TRUE; } } return FALSE; }
void CTrayIconHooker::Init(CTrayNotifyIcon* pTrayIcon, CWnd* pNotifyWnd) { //Validate our parameters ASSERT(!IsHooked()); ASSERT(pTrayIcon); //must have a valid tray notify instance ASSERT(pNotifyWnd && ::IsWindow(pNotifyWnd->GetSafeHwnd())); //Hook the top level frame of the notify window in preference //to the notify window itself. This will ensure that we get //the taskbar created message CWnd* pTopLevelWnd = pNotifyWnd->GetTopLevelFrame(); if (pTopLevelWnd) Hook(pTopLevelWnd); else Hook(pNotifyWnd); m_pTrayIcon = pTrayIcon; }
BOOL COXHookWnd::InstallSpy() { if(!IsHooked()) { TRACE(_T("COXHookWnd::InstallSpy: there's no hooked window")); return FALSE; } else { m_nCheckMouseTimerID=GetHookedWnd()->SetTimer( ID_CHECKMOUSETIMER,DFLT_CHECKMOUSEDELAY,NULL); if(m_nCheckMouseTimerID==0) { TRACE(_T("COXHookWnd::InstallSpy: failed to set timer")); return FALSE; } } return TRUE; }
NS_IMETHODIMP sbWindowMoveService::StartWatchingWindow(nsISupports *aWindow, sbIWindowMoveListener *aListener) { NS_ENSURE_ARG_POINTER(aWindow); NS_ENSURE_ARG_POINTER(aListener); NS_WARN_IF_FALSE(NS_IsMainThread(), "This service is MAIN THREAD ONLY!"); HWND windowHandle = NULL; windowHandle = NativeWindowFromNode::get(aWindow); NS_ENSURE_TRUE(windowHandle, NS_ERROR_INVALID_ARG); // Already hooked. Can only hook once. if(IsHooked(windowHandle)) { NS_WARNING("Window already hooked. Can only hook a window once."); return NS_OK; } BOOL success = ::SetPropW(windowHandle, PROP_WMS_INST, (HANDLE) this); NS_ENSURE_TRUE(success != 0, NS_ERROR_UNEXPECTED); HHOOK hookHandle = ::SetWindowsHookEx(WH_CALLWNDPROC, sbWindowMoveService::CallWndProc, NULL, ::GetCurrentThreadId()); NS_ENSURE_TRUE(hookHandle, NS_ERROR_FAILURE); nsCOMPtr<sbIWindowMoveListener> listener(aListener); mListeners.insert( std::make_pair<HWND, nsCOMPtr<sbIWindowMoveListener> >(windowHandle, listener)); mHooks.insert(std::make_pair<HWND, HHOOK>(windowHandle, hookHandle)); return NS_OK; }