如何用HOOK钩住系统的消息?例如按某个键发出的消息?

albert 2000-01-27 08:43:00
...全文
226 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tony_Yuan 2000-03-01
  • 打赏
  • 举报
回复
象jjia84的问题一样
可以使用钩子函数
首先声明api函数和常量,定义钩子函数
Public Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Public Declare Function GetCurrentThreadId Lib "kernel32" () As Long
Public Const WH_KEYBOARD = 2

Public gLngKeyHook As Long

Public Function KeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
......你自己的处理
KeyboardProc =CallNextHookEx(gLngKeyHook,nCode,wParam,lParam)
End Function

然后在窗口中设置钩子函数:
gLngKeyHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf KeyboardProc, App.hInstance, GetCurrentThreadId)

最后别忘了在unload时取消钩子函数
UnhookWindowsHookEx gLngKeyHook

希望以上对你有帮助

zhengsky 2000-03-01
  • 打赏
  • 举报
回复
告诉我一声
benbenlittle 2000-03-01
  • 打赏
  • 举报
回复
你的自己编个dll文件
不过不能用vb编
可以参看王国荣的《VB6 API讲座》
mcwind 2000-02-02
  • 打赏
  • 举报
回复
如果使用此C的话,可以参考Jeffrey Richter 的<WindowsNT高级编程>清华大学出版社
freehero 2000-02-02
  • 打赏
  • 举报
回复
利用msghhok控件, vbapi.yeah.net ,后者来信 freehero2yeah.net
upstream 2000-01-28
  • 打赏
  • 举报
回复
msdn中有键盘钩子的例子代码。
vBin 2000-01-28
  • 打赏
  • 举报
回复
你去这个站点看看吧
hellovb.yeah.net
上面有这方便的控件。

或者你可以参阅王国荣写的《VB6 API讲座》那里面也想这方面的例子。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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