Skip to content

cnsuhao/MemberFunctionHook

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MemberFunctionHook

主要功能是SetWindowsHookEx函数中可以使用C++成员函数作为回调函数。 主要思想及实现代码来自http://blog.csdn.net/realzyc8847/article/details/6229350 我对他进行了简单的分解,将核心的成员函数转普通函数功能提取出来以便适用于更多场景。

  • 此模块需要运行数据段代码,需要关闭数据执行保护 /NXCOMPAT:NO  

例子

GamePageUi::GamePageUi()
{
	HookManager::Instance()->AddHook(BaseHook::Keyboard, GetCurrentThreadId(),
	std::bind(&GamePageUi::KeyboardHookProc, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
}
LRESULT GamePageUi::KeyboardHookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
	//屏蔽F10
	return (wParam == VK_F10) ? 1 : 0;
}

转换功能例子

//===============================================================
//将类成员函数指针转化为一般函数指针
LRESULT(CALLBACK * PCoreHookProcess)(int nCode, WPARAM wParam, LPARAM lParam);
MEMBERFUNCTION_TO_NORMALFUNCTION(this, &BaseHook::CoreHookProcess, &PCoreHookProcess);
//===============================================================
point_HookID = SetWindowsHookEx(GetHookType(), PCoreHookProcess, hMod, GetThreadId());

 依赖  

About

类成员函数转成普通函数,SetWindowsHookEx可以使用类成员函数作为回调函数

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 96.5%
  • C 3.5%