VB回调函数参数的格式怎么确定?

来源:百度知道 编辑:UC知道 时间:2024/06/01 06:47:07
比如hNextHookProc = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, 0)
的回调函数Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, lParam As KBDLLHOOKSTRUCT) As Long
的参数格式为什么是那样的?还有各参数的含义

这是windows定义好的格式
http://msdn.microsoft.com/en-us/library/ms644984(VS.85).aspx

你所说的回调函数中,Long是VB自带的数据类型,KBDLLHOOKSTRUCT是自定义类型,你要调用时,还得按如下方法声明一下:
Public Type KBDLLHOOKSTRUCT
.. as ..
.. as ..
...
End Type

SetWindowsHookEx API 安装钩子

HHOOK SetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId)

idHook 要安装的钩子类型,WH_KEYBOARD 是 键盘钩子,截获和键盘有关的消息
lpfn 指向钩子处理过程的函数指针, 如果线程参数 dwThreadId 是 0 或者
是其他进程生成的线程,lpfn 必须指向DLL中的过程,否则可以指向当前
进程中的过程
hMod 如果 lpfn 指向 DLL中的过程,hMod 必须设为 DLL 的句柄,
如果 dwThreadId 是当前进程生成的线程 hMod 必须为空
dwThreadId 钩子所关联的线程ID, 就是被监视的线程,如果 dwThreadId 是 0,
钩子就是全局钩子,监视所有线程

回调函数

Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Dim kk As KBDLLHOO