下面这个是别人给我的例子.
建一个comboBox 再把代码复制进去.
选择一个快捷键.再下快捷键就可以弹出msgbox我想问的是:
如果我有2个comboBox呢?
一个是combo1(0)
一个是combo1(1)
那要怎么实现 
combo1(0)弹出 msgbox "你好"
combo1(1)弹出 msgbox "我好" ==========================================================================
'模块 
Private Declare Function CallNextHookEx Lib "user32" _ 
(ByVal hHook As Long, _ 
ByVal nCode As Long, _ 
ByVal wParam As Long, _ 
lParam As Any) As Long Private 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 Private Declare Function UnhookWindowsHookEx Lib "user32" _ 
(ByVal hHook As Long) As Long Private Declare Sub CopyMemory Lib "kernel32" _ 
Alias "RtlMoveMemory" _ 
(Destination As Any, _ 
Source As Any, _ 
ByVal Length As Long) Private Type PKBDLLHOOKSTRUCT 
vkCode As Long 
scanCode As Long 
flags As Long 
time As Long 
dwExtraInfo As Long 
End Type 
Private Const WM_KEYDOWN = &H100 
Private Const WM_SYSKEYDOWN = &H104 
Private Const WM_KEYUP = &H101 
Private Const WM_SYSKEYUP = &H105 Private Const HC_ACTION = 0 
Private Const WH_KEYBOARD_LL = 13 
Private lngHook As Long Public vbHotKey As Long
Public vbHotKeyText As StringPublic Function HotKey(ByVal nCode As Long, _ 
ByVal wParam As Long, _ 
ByVal lParam As Long) As Long 
Dim p As PKBDLLHOOKSTRUCT 
If nCode = HC_ACTION Then 
Select Case wParam 
Case WM_KEYDOWN, WM_SYSKEYDOWN 
Call CopyMemory(p, ByVal lParam, Len(p)) If p.vkCode = vbHotKey Then '这里定义热键
                
                MsgBox "你好"  '这里,执行你要执行的程序,我这里示范msgbox
            End If
Case Else End Select 
End If 
Call CallNextHookEx(WH_KEYBOARD_LL, nCode, wParam, lParam) 
End Function Public Sub HooK() 
lngHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf HotKey, App.hInstance, 0) 
End Sub Public Sub UnHooK() 
Call UnhookWindowsHookEx(lngHook) 
End Sub ==========================================================================
'窗体
Private Sub Combo1_Click()
    Select Case Combo1.Text
    Case "F1"
        vbHotKey = vbKeyF1
    Case "F2"
        vbHotKey = vbKeyF2
    Case "F3"
        vbHotKey = vbKeyF3    Case "1"
        vbHotKey = vbKey1
    Case "2"
        vbHotKey = vbKey2
    Case "3"
        vbHotKey = vbKey3    End Select    vbHotKeyText = Combo1.Text
End SubPrivate Sub Form_Load()
    HooK
End SubPrivate Sub Form_Unload(Cancel As Integer)
    UnHooK
End Sub 

解决方案 »

  1.   

    不明白你的意思按照我的理解,你应该定义两套vbHotKey。
    比如 vbHotKey1和vbHotKey2然后
    If p.vkCode = vbHotKey1 Then '这里定义热键 
                    
                    MsgBox "你好"  '这里,执行你要执行的程序,我这里示范msgbox 
    End If 
    If p.vkCode = vbHotKey2 Then '这里定义热键 
                    
                    MsgBox "你好"  '这里,执行你要执行的程序,我这里示范msgbox 
    End If 改写这个:
    Private Sub Combo1_Click(index) 
    if index = 0 then
        Select Case Combo1.Text 
        Case "F1" 
            vbHotKey1 = vbKeyF1 
        Case "F2" 
            vbHotKey1 = vbKeyF2 
        Case "F3" 
            vbHotKey1 = vbKeyF3 
    ...
    else
        Select Case Combo1.Text 
        Case "F1" 
            vbHotKey2 = vbKeyF1 
        Case "F2" 
            vbHotKey2 = vbKeyF2 
        Case "F3" 
            vbHotKey2 = vbKeyF3     Case "1" 
            vbHotKey2 = vbKey1
    ...
    End Sub