TC官方合作论坛

 找回密码
 立即注册
查看: 2275|回复: 6

【hook】安装全局钩子之后,一个动作会调用两次钩子函数。

[复制链接]
发表于 2018-3-22 21:52:00 来自手机 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 剑仙十号 于 2018-3-23 09:02 编辑

【hook】安装全局钩子之后,一个动作会调用两次钩子函数。这是为何?

#include <windows.h>
#include <tchar.h>
HHOOK g_hKeyboard = NULL;

#pragma data_seg("MySec")
HWND m_hWnd = NULL;
#pragma data_seg()

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if(VK_F1 == wParam)
{
SendMessage(m_hWnd,WM_KEYDOWN,wParam,lParam);
MessageBox(NULL,_T("hook"),_T("hook"),MB_OK);
return 1;
}
else
{
return CallNextHookEx(g_hKeyboard,nCode,wParam,lParam);
}
}

void SetHook(HWND hWnd)
{
m_hWnd = hWnd;
g_hKeyboard = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle(_T("Hook")),0);
}
//
无论我在什么窗口中按下 f1  都会出现两次信息窗 还发送两次 sendmessage 是为什么啊?

最佳答案。
ccr :
因为有按下和抬起  WM_KEYUP  WM_KEYDOWN。
游客,如果您要查看本帖隐藏内容请回复


if(((lParam>>31)&1) ==0)
             {
                        if(VK_F1 == wParam)
{//按下
SendMessage(m_hWnd,WM_KEYDOWN,wParam,lParam);
MessageBox(NULL,_T("hook"),_T("hook"),MB_OK);
return 1;
}

             }
             else
            {
                     //弹起
            }
2013-02-02
位。左边是最高位,右边最低位.png
回复

使用道具 举报

 楼主| 发表于 2018-3-22 21:52:09 来自手机 | 显示全部楼层
本帖最后由 剑仙十号 于 2018-4-21 18:21 编辑

二楼,更新信息专用。
tc简单开发_爱好群:
433286131 (462/500)

tc简单开发_爱好群Ⅱ:
143358382 (192/500)

tc办公文本_爱好群:
612661895(29/500)

本群大神众多,新手众多。群文件内 资源海量。 希望新手 分享更多笔记,减少重复造轮子的时间。 好编程,齐学习,齐进步。
回复 支持 反对

使用道具 举报

发表于 2018-9-24 22:29:21 | 显示全部楼层
钩子函数
回复

使用道具 举报

发表于 2019-7-3 09:25:54 | 显示全部楼层
刚好有这个问题,看下是怎么弄的
回复 支持 反对

使用道具 举报

发表于 2020-1-10 20:08:26 | 显示全部楼层
111111111111111111111
回复 支持 反对

使用道具 举报

发表于 2020-9-26 16:06:41 | 显示全部楼层
142141241241
回复 支持 反对

使用道具 举报

发表于 2021-7-4 02:37:20 | 显示全部楼层
东东
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-17 20:27 , Processed in 0.042408 second(s), 25 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表