92 lines
1.8 KiB
C++
92 lines
1.8 KiB
C++
|
/*++
|
||
|
|
||
|
Copyright (c) 2000 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
CreateResumesQuickandEasy.cpp
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Hooks all application-defined window procedures and filters out an illegal
|
||
|
OCM notification code which causes the application to beep annoyingly.
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
|
||
|
History:
|
||
|
|
||
|
03/22/2000 mnikkel Created
|
||
|
01/10/2001 mnikkel Corrected to prevent a recursion problem.
|
||
|
01/11/2001 mnikkel Trimmed down to only necessary routines.
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include "precomp.h"
|
||
|
#include "olectl.h"
|
||
|
|
||
|
IMPLEMENT_SHIM_BEGIN(CreateResumesQuickandEasy)
|
||
|
#include "ShimHookMacro.h"
|
||
|
|
||
|
APIHOOK_ENUM_BEGIN
|
||
|
APIHOOK_ENUM_ENTRY(RegisterClassA)
|
||
|
APIHOOK_ENUM_END
|
||
|
|
||
|
/*++
|
||
|
Change OCM_NOTIFY behaviour
|
||
|
--*/
|
||
|
|
||
|
LRESULT CALLBACK
|
||
|
CreateResumesQuickandEasy_WindowProcHook(
|
||
|
WNDPROC pfnOld, // address of old WindowProc
|
||
|
HWND hwnd, // handle to window
|
||
|
UINT uMsg, // message identifier
|
||
|
WPARAM wParam, // first message parameter
|
||
|
LPARAM lParam // second message parameter
|
||
|
)
|
||
|
{
|
||
|
|
||
|
if (uMsg == OCM_NOTIFY)
|
||
|
{
|
||
|
NMHDR *pNmhdr = (LPNMHDR) lParam;
|
||
|
|
||
|
// For OCM Notification check for the illegal code and toss it
|
||
|
// (App Create Resumes Quick and Easy)
|
||
|
if (pNmhdr && pNmhdr->idFrom == 0 && pNmhdr->code == 0x704)
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
return (*pfnOld)(hwnd, uMsg, wParam, lParam);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*++
|
||
|
Hook all possible calls that can initialize or change a window's
|
||
|
WindowProc (or DialogProc)
|
||
|
--*/
|
||
|
|
||
|
ATOM
|
||
|
APIHOOK(RegisterClassA)(
|
||
|
CONST WNDCLASSA *lpWndClass // class data
|
||
|
)
|
||
|
{
|
||
|
WNDCLASSA wcNewWndClass = *lpWndClass;
|
||
|
|
||
|
wcNewWndClass.lpfnWndProc = (WNDPROC) HookCallback(lpWndClass->lpfnWndProc, CreateResumesQuickandEasy_WindowProcHook);
|
||
|
|
||
|
return ORIGINAL_API(RegisterClassA)(&wcNewWndClass);
|
||
|
}
|
||
|
|
||
|
|
||
|
/*++
|
||
|
Register hooked functions
|
||
|
--*/
|
||
|
|
||
|
HOOK_BEGIN
|
||
|
APIHOOK_ENTRY(USER32.DLL, RegisterClassA);
|
||
|
HOOK_END
|
||
|
|
||
|
|
||
|
IMPLEMENT_SHIM_END
|
||
|
|