全局键盘钩子的问题

gnuljf 2007-01-25 10:07:12
SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)LowLevelKeyboardHook_HookProc,::AfxGetApp()->m_hInstance,0);
如果使用dll做全局钩子的话,某些杀毒软件就会把钩子dll给杀掉,在网上找了一下据说使用WH_KEYBOARD_LL就可以不用dll而建立全局钩子,但是出现了一个问题,在某些游戏中,如果先启动自己的软件钩子就可以正常工作,但是如果先启动的是游戏后启动自己的软件的话钩子就失灵了。有没有可以解决的办法?
使用GetAsyncKeyState+计时器也可以模拟到相似的功能,只是比起钩子还是要逊色不少。
...全文
372 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
mbt1979 2007-02-03
这方面不熟悉,接分来得!
  • 打赏
  • 举报
回复
gnuljf 2007-02-03
没人回答,那么准备结贴,本周内来路过一下的都散分
  • 打赏
  • 举报
回复
gnuljf 2007-02-02
呼,终于可以登录了。

楼上的,你说这是什么话,你让我有种骂人的冲动了,难道用个键盘钩子就是要盗号的?

暂时的解决办法:用个计时器查找目标游戏窗口,如果之前没找到但之后的某次找到了,那么撤销钩子并重新下钩。
  • 打赏
  • 举报
回复
Jarrylogin 2007-01-26
最好还是不要搞别人的帐户和密码,外挂是不好的
  • 打赏
  • 举报
回复
gnuljf 2007-01-25
The LowLevelKeyboardProc hook procedure is an application-defined or library-defined callback function used with the SetWindowsHookEx function. The system calls this function every time a new keyboard input event is about to be posted into a thread input queue. The keyboard input can come from the local keyboard driver or from calls to the keybd_event function. If the input comes from a call to keybd_event, the input was "injected". However, the WH_KEYBOARD_LL hook is not injected into another process. Instead, the context switches back to the process that installed the hook and it is called in its original context. Then the context switches back to the application that generated the event.
从这上面的内容来看,使用WH_KEYBOARD_LL照理确实是全局性的钩子啊,现在为什么却会出现先启动我的软件后启动游戏却不能捕获到按键的问题了?
  • 打赏
  • 举报
回复
发帖
VC/MFC
加入

1.6w+

社区成员

VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
申请成为版主
帖子事件
创建了帖子
2007-01-25 10:07
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……