91 lines
1.4 KiB
C++
91 lines
1.4 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
NullHwndInMessageBox.cpp
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
This shim replaces "non window" handles in msgbox with NULL to tell it
|
||
|
that desktop is owner.
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
This is a general purpose shim.
|
||
|
|
||
|
History:
|
||
|
|
||
|
12/08/1999 a-jamd Created
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "precomp.h"
|
||
|
|
||
|
IMPLEMENT_SHIM_BEGIN(NullHwndInMessageBox)
|
||
|
#include "ShimHookMacro.h"
|
||
|
|
||
|
APIHOOK_ENUM_BEGIN
|
||
|
APIHOOK_ENUM_ENTRY(MessageBoxA)
|
||
|
APIHOOK_ENUM_ENTRY(MessageBoxW)
|
||
|
APIHOOK_ENUM_END
|
||
|
|
||
|
/*++
|
||
|
|
||
|
This stub function sets hWnd to NULL if it is not a valid window.
|
||
|
|
||
|
--*/
|
||
|
int
|
||
|
APIHOOK(MessageBoxA)(
|
||
|
HWND hWnd,
|
||
|
LPCSTR lpText,
|
||
|
LPCSTR lpCaption,
|
||
|
UINT uType
|
||
|
)
|
||
|
{
|
||
|
if (IsWindow(hWnd) == 0) {
|
||
|
hWnd = NULL;
|
||
|
}
|
||
|
|
||
|
return ORIGINAL_API(MessageBoxA)(hWnd, lpText, lpCaption, uType);
|
||
|
}
|
||
|
|
||
|
/*++
|
||
|
|
||
|
This stub function sets hWnd to NULL if it is not a valid window.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
int
|
||
|
APIHOOK(MessageBoxW)(
|
||
|
HWND hWnd,
|
||
|
LPCWSTR lpText,
|
||
|
LPCWSTR lpCaption,
|
||
|
UINT uType
|
||
|
)
|
||
|
{
|
||
|
if (IsWindow(hWnd) == 0) {
|
||
|
hWnd = NULL;
|
||
|
}
|
||
|
|
||
|
return ORIGINAL_API(MessageBoxW)(hWnd, lpText, lpCaption, uType);
|
||
|
}
|
||
|
|
||
|
/*++
|
||
|
|
||
|
Register hooked functions
|
||
|
|
||
|
--*/
|
||
|
|
||
|
HOOK_BEGIN
|
||
|
|
||
|
APIHOOK_ENTRY(USER32.DLL, MessageBoxA)
|
||
|
APIHOOK_ENTRY(USER32.DLL, MessageBoxW)
|
||
|
|
||
|
HOOK_END
|
||
|
|
||
|
|
||
|
IMPLEMENT_SHIM_END
|
||
|
|