mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
1.8 KiB
91 lines
1.8 KiB
/*++
|
|
|
|
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
|
|
|