请问大家,运用全局Hook来实现程序的热键功能,跟调用API中的GetAsyncKeyState函数来实现程序热键功能,那一个比较好呢?速度那一个更快,占用系统资源,那一个比较少呢?

解决方案 »

  1.   

    我觉得钩子函数好很多,但是vb不能创建普通的dll,真是郁闷!记得有一个可以vb生成普通dll的第三方控件,谁知道叫什么名字?
      

  2.   

    我做了个vb自定义全局热键的dll
    可以定义像Ctrl+0这样的热键,个数任意
    但是编译好后,当窗体隐藏后就没用了。
    why!
    如果谁能解决
    力马给出所有源码
      

  3.   

    都行,但我更喜欢用GetAsyncKeyStateKain(白衣卿相)
      你必须将钩子写成变通的DLL,然后再在VB中调用,否则就会出现你所说的情况,但VB本身只能写ActiveX dll ,所以必须用其它工具来做DLL,如VC.就这么多啦.
      

  4.   

    RegisterHotKey这个其实很好用的.
      

  5.   

    做的dll是通用的
    eg
    Dim mkeyHook As ObjectPrivate Sub Form_Load()
        Label1.Caption = "Please Press Ctrl+D"
        Set mkeyHook = CreateObject("Keyhook.mykeyhook") '创建一个keyhook实例
        
        '定义第一个快捷键 Ctr+D
        'obj:对象一般为me
        mkeyHook.mykeyevents.Add Me, "T1", HK_KEYD, &H11
        
        '定义第二个快捷键 Ctr+9
        
        mkeyHook.mykeyevents.Add Me, "T2", HK_KEY9, &H11
        
        mkeyHook.LoadHook  '挂接键盘钩子
        
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        mkeyHook.UnLoadHook  '释放键盘钩子
    End Sub
    Public Sub T1()
       ' mkeyHook.mykeyevents.Item(1).bkeydown = True
        
        MsgBox "Please Press Ctrl+9"
    End SubPublic Sub T2()
       ' mkeyHook.mykeyevents.Item(2).bkeydown = True
        MsgBox "hello T2"
    End Sub
      

  6.   

    用RegisterHotKey呀..在我的主页上有一个ghost007,有源码,欢迎下载!
    我的主页 k_badboy.nease.net