关于SetWindowsHookEx使用的几个问题,请高手帮帮我!
程序如下:
(
Public hHook as Long
Private Sub Form_Load()′程序启动时安装钩子
hHook=SetWindowsHookEx(2,Address of MyKBHook,0,App.ThreadID)
End Sub
′具体的钩子程序,本例中该过程被包含在Module1中
Public Function MyKBHook(ByVal nCode As Long,ByVal wParam As Long,ByVal lParam As Long)As Long
If nCode>=0 then
Open "C:\Keyfile.txt" For Append As #1 '将键盘的操作记录在Keyfile.txt文件之中
'记录所操作的键、操作时间、日期操作时的按键状态,用16进制记录
Write #1,wParam,Hex(lParam),Date,time
Close #1
MyKBHook=0 '表示要处理这个消息
'屏蔽ALT+F4组合键
if wParam=115 And(lParam And&H20000000)<>0 Then
if(lParam And &HC000000)=0 Then '是否进行ALT+F4操作
MyHBHook=1 '钩子吃掉这个消息
End if
End if
End if
Call CallNextHookEx(hHook,nCode,wParam,lParam)'将消息传给下一个钩子
End Function
'程序退出时卸载钩子
Private Sub Form_Unload(Cancel As Interger)
Call Unhook WindowsHookEx(hHook)
End Sub
)
有三个问题想请教:
1.将MyHBHook=1后,MyHBHook的值并没有被任何进程或函数所调用到,钩子是怎样吃掉这个消息呢?详细过程是怎样的?
2.CallNextHookEx的具体作用是什么?在该程序中将该条语句去掉好象没多大关系!
3.用钩子该怎样区分是按下了a还是A呢?
我是一位API的初学者,很想将一些细节的问题搞清楚,希望各位高手帮帮我,先谢谢了!