关于键盘钩子

scj9ce 2003-05-30 01:01:14
大哥们帮帮我吧,编了个小程序,模拟按键的.
本来用的是热键起动,但是,在某些情况下热键不起作用,比如说游戏里面.
看到一些文章用钩子监视键盘,我也试了一下,不太好用阿.
WinHook:=SetWindowsHookEx(WH_KEYBOARD,@KeyboardHook,0,GetCurrentThreadID);
只能是窗口为当前窗口是,按键才好使.我看了一下帮助,不是很懂.
怎样设置才能在任何界面下都好用呀?
谢谢回复
...全文
71 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cstarter 2003-08-05
  • 打赏
  • 举报
回复
HOOK有一两种类型:线程级HOOK和系统级HOOK(当然也有其他的称呼),顾名思义。
要想做一个系统级HOOK首先将该HOOK放在一个DLL里,(至于为什么在MSDN里有说明我只说一句:这是因为该HOOK要在所有在系统中运行的线程的CONTEXT中被调用),然后要使用SetWindowsHookEx时将第四个参数设为0(第四个参数指定监视的线程ID,为0时为全局钩子且一定要置于动态链接库中)
PDK 2003-08-04
  • 打赏
  • 举报
回复
WinHook:=SetWindowsHookEx(WH_KEYBOARD,@KeyboardHook,0,GetCurrentThreadID);
第三个参数是钩子函数所在的模块句柄,第四个参数是要
ehom 2003-08-04
  • 打赏
  • 举报
回复
这类问题查查MSDN你会明白的,如果基本概念、各个API的作用和各参数的意义都不清楚,怎么可能知道问题在哪?

SetWindowsHookEx第一个参数是钩子的类型;第二个参数是钩子函数的地址;第个参数是包含钩子函数的模块句柄;第四个参数指定监视的线程ID,为0时为全局钩子且一定要置于动态链接库中。

GetCurrentThreadID是获取当前线程ID,那表现出来当然是只对当前窗口有用!
angelface 2003-08-04
  • 打赏
  • 举报
回复
第三个参数应该是instance吧,,
李_军 2003-08-04
  • 打赏
  • 举报
回复
要例子吗,我有,到我三星了,我把源代码公开出来,截密码的,快了
scj9ce 2003-05-31
  • 打赏
  • 举报
回复
55,又要放血,唉,穷人呀
d0347 2003-05-31
  • 打赏
  • 举报
回复
建议,
楼主去买本 Delphi7 Window深入编程的书看,
是飞思出版社的,48¥,我也有打算要买的

这种问不是一两贴就可以说的清的,还是自已看书去吧!
QQ21898580 2003-05-30
  • 打赏
  • 举报
回复
钩子看了一天了,不会
scj9ce 2003-05-30
  • 打赏
  • 举报
回复
自己顶

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧