我使用 WH_KEYBOARD_LL Hook 并且总是向系统返回消息。
我想知道下面的两种方法,哪种更好?我认为 //1
性能更好,因为它会立即将消息发送回系统,而 //2
必须完成它的内容然后发送回来,但我看到几乎人们使用 //2
。帮助我理解,谢谢!
HHOOK _l_hook
// 1
LRESULT __stdcall l_Callback(int nCode, WPARAM wParam, LPARAM lParam)
{
CallNextHookEx(_l_hook, nCode, wParam, lParam);
//Do stuff
return 0;
}
// 2
LRESULT __stdcall l_Callback(int nCode, WPARAM wParam, LPARAM lParam)
{
//Do stuff
CallNextHookEx(_l_hook, nCode, wParam, lParam);
}
最佳答案
这两个都不对。样板实现应如下所示:
LRESULT CALLBACK DebugProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0) {
// do your stuff
//...
}
return CallNextHookEx(_l_hook, nCode, wParam, lParam);
}
您没有指定您实现的 Hook 类型,因此无法猜测您是否有任何理由改变模式。始终以“不”为目标。使用 MSDN Library 中的代码示例如有疑问。
关于c++ - 哪种方式返回HHOOK消息给系统更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20887106/