122 lines
2.3 KiB
C++
122 lines
2.3 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 2001 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
CorelAppsRegistration.cpp
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
This is an app specific shim.
|
||
|
|
||
|
History:
|
||
|
|
||
|
11/13/2001 prashkud Created
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "precomp.h"
|
||
|
IMPLEMENT_SHIM_BEGIN(CorelAppsRegistration)
|
||
|
#include "ShimHookMacro.h"
|
||
|
|
||
|
APIHOOK_ENUM_BEGIN
|
||
|
APIHOOK_ENUM_ENTRY(ShowWindow)
|
||
|
APIHOOK_ENUM_ENTRY(CreateWindowExA)
|
||
|
APIHOOK_ENUM_END
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Calls SetForegroundWindow directly after a ShowWindow call with SW_SHOW as
|
||
|
the operation. The mouse_event call allows the SetForegroundWindow call to
|
||
|
succeed. This is a hack borrowed from the DirectX sources.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
BOOL
|
||
|
APIHOOK(ShowWindow)(
|
||
|
HWND hWnd,
|
||
|
INT nCmdShow
|
||
|
)
|
||
|
{
|
||
|
BOOL bReturn;
|
||
|
|
||
|
bReturn = ORIGINAL_API(ShowWindow)(hWnd, nCmdShow | SW_SHOW);
|
||
|
|
||
|
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 0, 0);
|
||
|
SetForegroundWindow(hWnd);
|
||
|
LOGN( eDbgLevelWarning,
|
||
|
"Forcing to foreground.");
|
||
|
|
||
|
return bReturn;
|
||
|
}
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Calls SetForegroundWindow directly after a CreateWindowEx call with
|
||
|
WS_VISIBLE as a style. The mouse_event call allows the
|
||
|
SetForegroundWindow call to succeed. This is a hack borrowed from
|
||
|
the DirectX sources.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
HWND
|
||
|
APIHOOK(CreateWindowExA)(
|
||
|
DWORD dwExStyle,
|
||
|
LPCSTR lpClassName,
|
||
|
LPCSTR lpWindowName,
|
||
|
DWORD dwStyle,
|
||
|
int x,
|
||
|
int y,
|
||
|
int nWidth,
|
||
|
int nHeight,
|
||
|
HWND hWndParent,
|
||
|
HMENU hMenu,
|
||
|
HINSTANCE hInstance,
|
||
|
LPVOID lpParam
|
||
|
)
|
||
|
{
|
||
|
HWND hReturn;
|
||
|
|
||
|
dwStyle |= WS_VISIBLE;
|
||
|
hReturn = ORIGINAL_API(CreateWindowExA)(
|
||
|
dwExStyle,
|
||
|
lpClassName,
|
||
|
lpWindowName,
|
||
|
dwStyle,
|
||
|
x,
|
||
|
y,
|
||
|
nWidth,
|
||
|
nHeight,
|
||
|
hWndParent,
|
||
|
hMenu,
|
||
|
hInstance,
|
||
|
lpParam);
|
||
|
|
||
|
mouse_event(MOUSEEVENTF_WHEEL, 0, 0, 0, 0);
|
||
|
SetForegroundWindow(hReturn);
|
||
|
LOGN( eDbgLevelWarning,
|
||
|
"Forcing to foreground.");
|
||
|
|
||
|
return hReturn;
|
||
|
}
|
||
|
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Register hooked functions
|
||
|
|
||
|
--*/
|
||
|
|
||
|
HOOK_BEGIN
|
||
|
APIHOOK_ENTRY(USER32.DLL, ShowWindow)
|
||
|
APIHOOK_ENTRY(USER32.DLL, CreateWindowExA)
|
||
|
HOOK_END
|
||
|
|
||
|
|
||
|
IMPLEMENT_SHIM_END
|
||
|
|