// HookDLL.dll Adapter
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam);
CuHook Hook;
Hook.Init(HookProc, WH_KEYBOARD_LL);
// CuHook.h
class CuHook
{
typedef void (* LPFN_INITHOOK)(HOOKPROC lpfnCallBackHookProc, int idHook);
LPFN_INITHOOK m_lpfnInitHook;
typedef void (* LPFN_UNHOOK)(void);
LPFN_UNHOOK m_lpfnUnHook;
CuDllManager m_DllManager;
public:
CuHook(void);
~CuHook(void);
void Init(HOOKPROC lpfnCallBackHookProc, int idHook);
};
// CuHook.cpp
CuHook::CuHook(void)
:m_lpfnInitHook(NULL),
m_lpfnUnHook(NULL)
{
}
CuHook::~CuHook(void)
{
if( m_lpfnUnHook != NULL )
m_lpfnUnHook();
}
void CuHook::Init(HOOKPROC lpfnCallBackHookProc, int idHook)
{
BOOL bLoadDll = m_DllManager.LoadLibrary(L"HookDll.dll");
Assert( bLoadDll != NULL, TEXT("Don't Find HookDll.dll") );
m_lpfnInitHook = (LPFN_INITHOOK)m_DllManager.GetProcAddress("InitHook");
Assert( m_lpfnInitHook != NULL, TEXT("Don't Find function InitHook") );
m_lpfnUnHook = (LPFN_UNHOOK)m_DllManager.GetProcAddress("UnHook");
Assert( m_lpfnInitHook != NULL, TEXT("Don't Find function UnHook") );
if( m_lpfnInitHook != NULL )
m_lpfnInitHook(lpfnCallBackHookProc, idHook);
}
2009年12月26日 星期六
CuHook - HookDLL.dll Adapter
訂閱:
張貼留言 (Atom)
對於 Thread or global 都商用的 WH_KEYBOARD 得在改進擴充, lpfnCallBackHookProc 的來源, 必需要是GetProcAddress從DLL裡叫出來的, 才能轉為global, 這個得在找時間測試!
回覆刪除