132 lines
2.2 KiB
C++
132 lines
2.2 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
HideTaskBar.cpp
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
The WS_EX_CLIENTEDGE flag means that the taskbar gets shown on NT. This
|
||
|
isn't always what's desirable.
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
This is a general purpose shim.
|
||
|
|
||
|
History:
|
||
|
|
||
|
04/07/2000 linstev Created
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "precomp.h"
|
||
|
|
||
|
IMPLEMENT_SHIM_BEGIN(HideTaskBar)
|
||
|
#include "ShimHookMacro.h"
|
||
|
|
||
|
APIHOOK_ENUM_BEGIN
|
||
|
APIHOOK_ENUM_ENTRY(CreateWindowExA)
|
||
|
APIHOOK_ENUM_ENTRY(CreateWindowExW)
|
||
|
APIHOOK_ENUM_END
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Remove invalid Windows 2000 style bits from dwExStyle mask before calling
|
||
|
CreateWindowEx.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
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
|
||
|
)
|
||
|
{
|
||
|
// Remove the client edge style.
|
||
|
dwExStyle &= ~WS_EX_CLIENTEDGE;
|
||
|
|
||
|
return ORIGINAL_API(CreateWindowExA)(
|
||
|
dwExStyle,
|
||
|
lpClassName,
|
||
|
lpWindowName,
|
||
|
dwStyle,
|
||
|
x,
|
||
|
y,
|
||
|
nWidth,
|
||
|
nHeight,
|
||
|
hWndParent,
|
||
|
hMenu,
|
||
|
hInstance,
|
||
|
lpParam);
|
||
|
}
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Remove invalid Windows 2000 style bits from dwExStyle mask before calling
|
||
|
CreateWindowEx.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
HWND
|
||
|
APIHOOK(CreateWindowExW)(
|
||
|
DWORD dwExStyle,
|
||
|
LPCWSTR lpClassName,
|
||
|
LPCWSTR lpWindowName,
|
||
|
DWORD dwStyle,
|
||
|
int x,
|
||
|
int y,
|
||
|
int nWidth,
|
||
|
int nHeight,
|
||
|
HWND hWndParent,
|
||
|
HMENU hMenu,
|
||
|
HINSTANCE hInstance,
|
||
|
LPVOID lpParam
|
||
|
)
|
||
|
{
|
||
|
dwExStyle &= ~WS_EX_CLIENTEDGE;
|
||
|
|
||
|
// Call the original API
|
||
|
return ORIGINAL_API(CreateWindowExW)(
|
||
|
dwExStyle,
|
||
|
lpClassName,
|
||
|
lpWindowName,
|
||
|
dwStyle,
|
||
|
x,
|
||
|
y,
|
||
|
nWidth,
|
||
|
nHeight,
|
||
|
hWndParent,
|
||
|
hMenu,
|
||
|
hInstance,
|
||
|
lpParam);
|
||
|
}
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Register hooked functions
|
||
|
|
||
|
--*/
|
||
|
|
||
|
HOOK_BEGIN
|
||
|
|
||
|
APIHOOK_ENTRY(USER32.DLL, CreateWindowExA)
|
||
|
APIHOOK_ENTRY(USER32.DLL, CreateWindowExW)
|
||
|
|
||
|
HOOK_END
|
||
|
|
||
|
|
||
|
IMPLEMENT_SHIM_END
|
||
|
|