各位,请问钩子是怎么运行的啊?请先看看我写的代码:
Public hhook
Private Sub Command1_Click()
hhook = SetWindowsHookEx(2, AddressOf testhook, 0, App.ThreadID)
End Sub
以下的是放在模块内的代码:
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 Function testhook(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
MsgBox "运行到我了"
End Function
运行以上代码后,我只按了一下键盘,为什么会弹出2个对话框?当关闭第一个的时候 还会弹出一个,那样就一共弹出了3个“运行到我了”这是怎么回事?这个钩子是怎么运行的啊? 还有那个当我把以上代码msgbox "运行到我了"  换成msgbox ncode & wParam & lParam 的时候 为什么出现的是78,"310001",“-------”这种格式的字符呢? 怎么不是我键盘的按键字符呢?那要怎么转化成键盘上的字符?请各位指点一下
由于我刚学习这钩子,所以很多都不知道 ,也百度不到。希望大家帮帮我,原谅我问些基础问题。谢谢

解决方案 »

  1.   

    你这只是简单的键盘钩子不算apihook你要显示键盘的按键的话要转换你后面的ncode的78就是你按下的键盘的acii码,转换了以后就可以了78的对应值是N
      

  2.   

    .......还没把HOOK与HOOK API各是什么东东搞清楚呢.
      

  3.   

    楼主可以百度一下,关键字:VB HOOK
      

  4.   

    说起来,可以给楼主推荐个代码:http://www.m5home.com/blog/article.asp?id=245这是我封装的鼠标键盘全局HOOK类,应该有参考价值.
      

  5.   

    楼主的是消息钩子,和api hook完全不一样,api hook常用的是IAT钩子好inline 钩子