关于键盘钩子使用心得

在开发俄罗斯方块游戏的DLL中,为实现键盘控制功能,采用了键盘钩子技术。通过挂载局部键盘钩子并设置回调函数,监听键盘按下事件来处理加速键操作。在完成使用后卸载钩子以避免影响系统性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近想写一个关于俄罗斯方块的游戏,初步设计成写进一个DLL里,提供几个简单的接口,如StartGame()等,但是在封装时,发现需要响应键盘消息(加速键功能)。最开始想了很多种方法,目的都是为了将应用程序里的消息传递到DLL中去,最开始想使用MFC的消息机制,将应用程序的消息手动传递到DLL中,使其DLL有机会执行相应的消息。但考虑到封装,以及接口的易用性,而且耦合度也增加了,于是果断放弃了该想法。最后经过在网络上查询,可以利用简单的键盘钩子实现以上功能。

   使用键盘钩子(局部键盘钩子,系统钩子,杀毒软件要阻止)的方法如下:

1. 挂载键盘钩子

//设置钩子函数,实现加速键功能
DWORD dwThreadId = 0, dwProcessId = 0;
//获取创建窗口的线程ID与进程ID
dwThreadId = ::GetWindowThreadProcessId(m_hHookWnd, &dwProcessId);
m_hHook = (HHOOK)SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)HookProc,
AfxGetInstanceHandle(), dwThreadId);

    注意:  其中m_hHookWnd标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值