c++ - 哪种方式返回HHOOK消息给系统更好?

标签 c++ winapi return hook message

我使用 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/

相关文章:

c++ - 在 Matrix 类中使用 [][] 进行常量双索引

scala - 仅当数组输入的大小为 1 时,函数才返回错误值

"return"的 C++ 说明

c++ - 如何只获取USB设备而不是系统中的所有设备

c++ - 无法创建子窗口,句柄无效

c++ - 获取PE头在内存中的虚拟地址

function - 为什么最终结果会有所不同?

c++ - 将 vector <bool> 转换为二进制

c++ - 快速读取和写入文件数据

c++ - 如何在 C++ 和归并排序中比较字符串