| Index: chrome_frame/event_hooker.cc
|
| ===================================================================
|
| --- chrome_frame/event_hooker.cc (revision 0)
|
| +++ chrome_frame/event_hooker.cc (revision 0)
|
| @@ -0,0 +1,58 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome_frame/event_hooker.h"
|
| +
|
| +#include <crtdbg.h>
|
| +#include "chrome_frame/bho_loader.h"
|
| +
|
| +EXTERN_C IMAGE_DOS_HEADER __ImageBase;
|
| +
|
| +EventHooker::EventHooker()
|
| +: window_creation_hook_(NULL) {}
|
| +
|
| +EventHooker::~EventHooker() {
|
| + StopHook();
|
| +}
|
| +
|
| +bool EventHooker::StartHook() {
|
| + if ((NULL != window_creation_hook_)) {
|
| + return false;
|
| + }
|
| +
|
| + window_creation_hook_ = SetWinEventHook(EVENT_OBJECT_CREATE,
|
| + EVENT_OBJECT_CREATE,
|
| + reinterpret_cast<HMODULE>(
|
| + &__ImageBase),
|
| + WindowCreationHookProc,
|
| + 0,
|
| + 0,
|
| + WINEVENT_INCONTEXT);
|
| + if (NULL == window_creation_hook_) {
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +void EventHooker::StopHook() {
|
| + if (NULL != window_creation_hook_) {
|
| + UnhookWinEvent(window_creation_hook_);
|
| + window_creation_hook_ = NULL;
|
| + }
|
| +}
|
| +
|
| +VOID CALLBACK EventHooker::WindowCreationHookProc(HWINEVENTHOOK hook,
|
| + DWORD event,
|
| + HWND window,
|
| + LONG object_id,
|
| + LONG child_id,
|
| + DWORD event_tid,
|
| + DWORD event_time) {
|
| + _ASSERTE((EVENT_OBJECT_CREATE == event) ||
|
| + (EVENT_OBJECT_PARENTCHANGE == event));
|
| + if (OBJID_WINDOW == object_id) {
|
| + BHOLoader::GetInstance()->OnHookEvent(event, window);
|
| + }
|
| +}
|
| +
|
|
|
| Property changes on: chrome_frame\event_hooker.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|