http://good.gd/348868.htm
Õâ¸öÊÇÔ´ÂëÁË£¡¸ßÊÖ°ïæһÏ£¬Ð»Ð»
?
??
Â¥Ö÷Äܲ»ÄܰѴúÂëÌù³öÀ´£¿
¸Ð¾õÊÇÔÚË¢¹ã¸æ
// RegisterHookDlg.cpp : ʵÏÖÎļþ
//
#include "stdafx.h"
#include "RegisterHook.h"
#include "RegisterHookDlg.h"
#include ".\registerhookdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
typedef DWORD (CALLBACK * USERAPIHOOKPROC)(HINSTANCE hInstance, FARPROC *fnUserApis);
typedef DWORD (WINAPI * SYS_RegisterUserApiHookXP)(HINSTANCE hInstance, USERAPIHOOKPROC fnUserApiHook);
typedef BOOL (WINAPI * SYS_UnregisterUserApiHook)(VOID);
SYS_RegisterUserApiHookXP RegisterUserApiHookXP = NULL;
SYS_UnregisterUserApiHook UnregisterUserApiHook = NULL;
HMODULE g_hModule = NULL;
DWORD InHook()
{
DWORD rt = 0;
USERAPIHOOKPROC UserApiProc = NULL;
(FARPROC&)RegisterUserApiHookXP = GetProcAddress(LoadLibrary("user32"), "RegisterUserApiHook");
(FARPROC&)UserApiProc = GetProcAddress(g_hModule, "UserApiProc");
if ( RegisterUserApiHookXP != NULL && UserApiProc != NULL )
rt = RegisterUserApiHookXP(g_hModule, UserApiProc);
return rt;
}
BOOL UnHook()
{
BOOL rt = FALSE;