我用VB编写了一个自动控制鼠标应用程序,想在这个程序在最小化运行时,按下"CTRL+/"中止程序,使鼠标不在移动,但程序不关闭.高手们可以给我范例吗.急用.分不够可以再加

解决方案 »

  1.   

    http://search.csdn.net/Expert/topic/1524/1524095.xml?temp=.7458002
      

  2.   

    http://search.csdn.net/search.asp?key=%CF%B5%CD%B3%C8%C8%BC%FC&pre=%CF%B5%CD%B3%C8%C8%BC%FC&or=&not=&whole=&date=&field=&class=VB&option=advres&result=page&page=2&size=10&orderby=
      

  3.   

    既然有分就不能放过. 
    下面是你想要的代码:
    这些放在标准模块里
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Private 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
    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 LongPrivate Const WM_HOTKEY = &H312
    Private Const MOD_ALT = &H1
    Private Const MOD_CONTROL = &H2
    Private Const MOD_SHIFT = &H4
    Private Const GWL_WNDPROC = (-4)Private preWinProc As Long
    Private Modifiers As Long, uVirtKey As Long, idHotKey As LongPrivate Type taLong
        ll As Long
    End TypePrivate Type t2Int
        lWord As Integer
        hWord As Integer
    End TypePrivate Function Wndproc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If Msg = WM_HOTKEY And Form1.WindowState = 1 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
                    '按键后要执行的代码
                End If
            End If
        End If
        '如果不是热键信息则调用原来的程序
        Wndproc = CallWindowProc(preWinProc, hWnd, Msg, wParam, lParam)End Function
    Public Sub LoadHotKey(Frm As Form)
    Dim ret As Long
    '记录原来的window程序地址
    preWinProc = GetWindowLong(Frm.hWnd, GWL_WNDPROC)
    '用自定义程序代替原来的window程序
    ret = SetWindowLong(Frm.hWnd, GWL_WNDPROC, AddressOf Wndproc)
    idHotKey = 1
    Modifiers = MOD_CONTROL 'MOD_ALT + MOD_CONTROL 'Alt+Ctrl 键
    uVirtKey = vbKeyZ '这里是Z,自己去查/的常数值
    ret = RegisterHotKey(Frm.hWnd, idHotKey, Modifiers, uVirtKey)
    End Sub
    Public Sub UnLoadHotkey(Frm As Form)
    Dim ret As Long
    '取消Message的截取,使之送往原来的windows程序
    ret = SetWindowLong(Frm.hWnd, GWL_WNDPROC, preWinProc)
    Call UnregisterHotKey(Frm.hWnd, uVirtKey)
    End Sub
    事件代码
    Private Sub Form_Load()
    LoadHotKey Me'加载热键
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    UnLoadHotkey Me'卸载
    End Sub