我需要这样一个程序, 平时他的窗体是隐藏方式运行的 ,当按组合键 alt+shift+l 他弹出窗体,就像qq那样,平时隐藏 按 alt+ctrl+z 弹出?

解决方案 »

  1.   

    Option Explicit
    '  声明API函数
    Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
    Private Declare Function UnregisterHotKey Lib "user32" (ByVal hWnd As Long, ByVal id As Long) As Long
    Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As Msg, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
    Private Declare Function WaitMessage Lib "user32" () As Long
    '  声明结构
    Private Type POINTAPI
        x As Long
        y As Long
    End Type
    Private Type Msg
        hWnd As Long
        Message As Long
        wParam As Long
        lParam As Long
        time As Long
        pt As POINTAPI
    End Type
    '  声明常数
    Private Const MOD_ALT = &H1
    Private Const MOD_CONTROL = &H2
    Private Const MOD_SHIFT = &H4
    Private Const PM_REMOVE = &H1
    Private Const WM_HOTKEY = &H312Private HotKey_F As BooleanPrivate Sub Form_Load()
        Dim Message As Msg
        '注册 Ctrl+Shift+A 为热键
        RegisterHotKey Me.hWnd, &HBFFF&, MOD_CONTROL + MOD_SHIFT, vbKeyA
        Me.Hide
        '等待处理消息
        HotKey_F = False
        Do While Not HotKey_F
            '等待消息
            WaitMessage
            '检查是否热键被按下
            If PeekMessage(Message, Me.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then
                '打开计算器程序
                Shell "calc.exe", vbNormalFocus
            End If
            '转让控制权,允许操作系统处理其他事件
            DoEvents
        Loop
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        HotKey_F = True
        '撤销热键的注册
        Call UnregisterHotKey(Me.hWnd, &HBFFF&)
    End Sub