有这个源程序,在CSDN2001微软版光盘里有

解决方案 »

  1.   

    下面这段代码是设置CTRL+F10,CTRL+F11,CTRL+F12三个快捷键的操作 , 稍改一下就行了。  
    新建一个工程,加入一个模块,窗体名为默认的form1模块中的代码如下:
    Option ExplicitPublic Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal ID As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
        
    Public Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal ID As Long) As LongPublic Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic 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 LongPublic Const WM_HOTKEY = &H312
    Public Const GWL_WNDPROC = -4Public Const MOD_CTRL = &H2Public Const VK_F10 = &H79
    Public Const VK_F11 = &H7A
    Public Const VK_F12 = &H7BPublic glWinRet As LongPublic Function CallbackMsgs(ByVal wHwnd As Long, ByVal wmsg As Long, ByVal wp_id As Long, ByVal lp_id As Long) As Long
        If wmsg = WM_HOTKEY Then
            Call DoFunctions(wp_id)
            CallbackMsgs = 1
            Exit Function
        End If
        CallbackMsgs = CallWindowProc(glWinRet, wHwnd, wmsg, wp_id, lp_id)
    End FunctionPublic Sub DoFunctions(ByVal vKeyID As Byte)
        
        Form1.Show
        Form1.WindowState = 0
        DoEvents
        If Form1.Visible = False Then
            Form1.Show
            Form1.WindowState = 0
        End If
        
        Form1.Cls
        
        Select Case vKeyID
        Case 0
            Form1.Print "执行 CTRL+F10 的操作!"
        Case 1
            Form1.Print "执行 CTRL+F11 的操作!"
        Case 2
            Form1.Print "执行 CTRL+F12 的操作!"
        End Select
    End Sub窗体中的代码如下:
    Option ExplicitDim retVal0 As Boolean, retVal1 As Boolean, retVal2 As BooleanPrivate Sub Form_Load()
        Me.AutoRedraw = True    MsgBox "将要设置 CTRL+F10, CTRL+F11, CTRL+F12 为快捷键"
        
        retVal0 = RegisterHotKey(Me.hwnd, 0, MOD_CTRL, VK_F10)
        If Not retVal0 Then
            MsgBox "无法设置CTRL+F10为快捷键!", vbCritical
        End If
        
        retVal1 = RegisterHotKey(Me.hwnd, 1, MOD_CTRL, VK_F11)
        If Not retVal1 Then
            MsgBox "无法设置CTRL+F11为快捷键!", vbCritical
        End If
        
        retVal2 = RegisterHotKey(Me.hwnd, 2, MOD_CTRL, VK_F12)
        If Not retVal2 Then
            MsgBox "无法设置CTRL+F12为快捷键!", vbCritical
        End If
        
        If (retVal0 = False And retVal1 = False And retVal2 = False) Then
            MsgBox "没有任何快捷键被设置!", vbCritical
            End
        End If
        
        glWinRet = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf CallbackMsgs)
        
    End Sub
    Private Sub Form_Resize()    If Me.WindowState = 1 Then
            Me.Hide
        End If
        
    End Sub
    Private Sub Form_Unload(Cancel As Integer)    If retVal0 = True Then
            UnregisterHotKey Me.hwnd, 0
        End If
        
        If retVal1 = True Then
            UnregisterHotKey Me.hwnd, 1
        End If
        
        If retVal2 = True Then
            UnregisterHotKey Me.hwnd, 2
        End If
        
    End Sub
      

  2.   

    '演示怎样设置一个窗口在桌面上的HotKey,这个程序将Form1的HotKey设置为
    'Ctl+Alt+A.Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Const WM_SETHOTKEY = &H32
    Private Const HOTKEYF_SHIFT = &H1
    Private Const HOTKEYF_CONTROL = &H2
    Private Const HOTKEYF_ALT = &H4Private Sub Form_Load()
       Dim l As Long
       Dim wHotkey As Long
       
       wHotkey = (HOTKEYF_ALT Or HOTKEYF_CONTROL) * (2 ^ 8) + 65
       l = SendMessage(Me.hwnd, WM_SETHOTKEY, wHotkey, 0)
    End Sub
      

  3.   

    qbilbo(风之兄) 的方法是最好的,建议你应该给他分