Windows2003-3790/windows/appcompat/shims/general/nullhwndinmessagebox.cpp
2020-09-30 16:53:55 +02:00

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