94 lines
1.5 KiB
C++
94 lines
1.5 KiB
C++
/*++
|
|
|
|
Copyright (c) 2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
HPTourGuide.cpp
|
|
|
|
Abstract:
|
|
|
|
The application causes Explorer to crash when
|
|
a tour is selected. To fix we are eating LVM_GETITEMA
|
|
messages if the window handle matches the ListView
|
|
that the app was sending to.
|
|
Fix for Whistler bug #177103
|
|
|
|
Notes:
|
|
|
|
This is an app specific shim.
|
|
|
|
History:
|
|
|
|
03/28/2001 robdoyle Created
|
|
|
|
--*/
|
|
|
|
#include "precomp.h"
|
|
|
|
IMPLEMENT_SHIM_BEGIN(HPTourGuide)
|
|
#include "ShimHookMacro.h"
|
|
|
|
APIHOOK_ENUM_BEGIN
|
|
APIHOOK_ENUM_ENTRY(SendMessageA)
|
|
APIHOOK_ENUM_END
|
|
|
|
/*++
|
|
|
|
Eat LVM_GETITEMA messages for a specific hWnd
|
|
|
|
--*/
|
|
|
|
BOOL
|
|
APIHOOK(SendMessageA)(
|
|
HWND hWnd,
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
)
|
|
{
|
|
|
|
LRESULT lRet;
|
|
|
|
|
|
HWND hWnd_TARGET, hWnd_temp;
|
|
|
|
hWnd_temp = FindWindowExA (NULL, NULL, "Progman", "Program Manager");
|
|
hWnd_temp = FindWindowExA (hWnd_temp, NULL, "SHELLDLL_DefView", NULL);
|
|
hWnd_TARGET = FindWindowExA (hWnd_temp, NULL, "SysListView32", NULL);
|
|
|
|
|
|
if ((hWnd == hWnd_TARGET) && (uMsg == LVM_GETITEMA))
|
|
{
|
|
/* Uncomment to aid debugging
|
|
DPFN( eDbgLevelError, "bypassing SendMessage of LVM_GETITEMA");
|
|
*/
|
|
|
|
lRet = TRUE;
|
|
}
|
|
|
|
else
|
|
{
|
|
lRet = ORIGINAL_API(SendMessageA)(
|
|
hWnd,
|
|
uMsg,
|
|
wParam,
|
|
lParam);
|
|
}
|
|
return lRet;
|
|
}
|
|
|
|
/*++
|
|
|
|
Register hooked functions
|
|
|
|
--*/
|
|
|
|
HOOK_BEGIN
|
|
|
|
APIHOOK_ENTRY(USER32.DLL, SendMessageA)
|
|
|
|
HOOK_END
|
|
|
|
IMPLEMENT_SHIM_END
|