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;
}
Beispiel #2
0
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;
}
Beispiel #5
0
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();
	}
}
Beispiel #6
0
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;
}
Beispiel #8
0
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;
}