希望程序运行的时候在后台,但可以监视键盘的组合键,已启动相应的程序
先前只有一个快捷键和一个应用程序,如何设置多个快捷键分别对应多个应用程序呢?

解决方案 »

  1.   

    你的一个快捷键和一个应用程序是怎么做的?我的想法是首先用Hook得到键盘输入,然后根据不同的键盘输入,使用Shell调用不同的应用程序
      

  2.   

    使用HOOK技术,我这里有HOOK说明书,
    要的留下E-MAIL
      

  3.   

    那就一个一个的RegisterHotKey
    不知道你想要什么.
      

  4.   

    给个说明书:[email protected]
    谢谢!
      

  5.   

    同意ColdMooon(月光寒)
    用RegisterHotKey
      

  6.   

    用hook的话,要做全局的,较麻烦,还是RegisterHotKey来的方便
      

  7.   

    高手麻烦告诉一下怎么用RegisterHotKey一个一个注册呢?
    我的代码如下:
    Module:
    Option Explicit
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
    Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As LongPublic Const WM_HOTKEY = &H312
    Public Const MOD_ALT = &H1
    Public Const MOD_CTRL = &H2
    Public Const MOD_SHIFT = &H4
    Public Const GWL_WNDPROC = (-4)
    Public preWinProc As Long, progName As String
    Public Modifiers As Long, uVirtKey As Long, idHotKey As LongPrivate Type taLong
       ll As Long
    End Type
    Private Type t2Int
       lWord As Integer
       hword As Integer
    End TypePublic Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
     If Msg = WM_HOTKEY Then
        If wParam = idHotKey Then
           Dim lp As taLong, i2 As t2Int
           lp.ll = lParam
           LSet i2 = lp
           If (i2.lWord = Modifiers) And i2.hword = uVirtKey Then
              Shell "notepad.exe", vbNormalFocus
           End If
       End If
     End If
      wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
     End FunctionForm1:Private Sub KeyMonitor(just As Boolean)
      If just = True Then
            preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
            ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)
            idHotKey = 1
              progName = "mspaint.exe"
            Modifiers = MOD_CTRL + MOD_ALT
            uVirtKey = vbKeyF1
            ret = RegisterHotKey(Me.hwnd, idHotKey, Modifiers, uVirtKey)
        Else
            ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
            Call UnregisterHotKey(Me.hwnd, uVirtKey)
     End If
    End SubKeyMonitor True 打开监视
    KeyMonitor True 关闭监视这只能以此实现一个,我曾用数组想实现多个但没有成功,请高手执教
      

  8.   

    ColdMooon(月光寒)
    我的E-Mail:[email protected]
      

  9.   

    RegisterHotKey
    看看我的代码:
    http://netbar.henan.com.cn/soft/sharp hotkey.rar
      

  10.   

    RegisterHotKey(Me.hwnd, idHotKey, Modifiers, uVirtKey)
    设置不同idHotKey,uVirtKey就可以注册不同快捷键如下
    idHotKey1=1
    idHotKey2=2ret = RegisterHotKey(Me.hwnd, idHotKey1, MOD_CTRL + MOD_ALT, vbKeyF1) 'CTRL+ALT+F1
    ret2=RegisterHotKey(Me.hwnd, idHotKey2, MOD_CTRL + MOD_ALT, vbKeyF2) 'CTRL+ALT+F2
    同时注册了两个快捷键