如题   比如 获得左右键按下  不要告诉我用什么form中的mouse_down之类的
我的意思 最好是api  或用回调函数等  最好给个例子谢谢  分不够可以加

解决方案 »

  1.   

    可以用鼠标模拟函数:
    Private Declare Sub mouse_event Lib "user32.dll" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)Call mouse_event(MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTDOWN, 834, 339, 0, 0)
    Call mouse_event(MOUSEEVENTF_ABSOLUTE Or MOUSEEVENTF_LEFTUP, 834, 339, 0, 0)
    DoEvents这是我从我的程序里面拷下来,你好好看看,这些帖子蛮多!!!!
      

  2.   

    对了,还可以用SendMessage()的!!看以前的帖子!
      

  3.   

    我写的完整的键盘和鼠标全局HOOK:
    =============================
    '''form1 :
    Sub form_load()
       lMouseHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf LowLevelMouseProc, App.hInstance, 0)
       lKeyBoardHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
    End SubPrivate Sub Form_Unload(Cancel As Integer)
       If lMouseHook <> 0 Then
          UnhookWindowsHookEx lMouseHook
       End If
       
       If lKeyBoardHook <> 0 Then
          UnhookWindowsHookEx lKeyBoardHook
       End If
    End Sub
    ==========================================================
    'module1:
    Public 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
    Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
    Public Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long消息
    Public Const HC_ACTION = 0
    Public Const WH_KEYBOARD_LL = 13
    Public Const WH_MOUSE_LL = 14'鼠标消息
    Public Const WM_RBUTTONUP = &H205
    Public Const WM_RBUTTONDOWN = &H204
    Public Const WM_LBUTTONUP = &H202
    Public Const WM_LBUTTONDOWN = &H201
    Public Const WM_MOUSEWHEEL = &H20A
    Public Const WM_MOUSEMOVE = &H200'键盘消息
    Public Const WM_KEYDOWN = &H100
    Public Const WM_KEYUP = &H101Public lMouseHook As Long, lKeyBoardHook As LongPublic Function LowLevelMouseProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If code = HC_ACTION Then
          Select Case wParam
            Case WM_MOUSEMOVE
               Form1.Text1 = "mouse MOVE"
            Case WM_RBUTTONUP
                Form1.Text1 = "mouse RBUTTONUP"
            Case WM_RBUTTONDOWN
                Form1.Text1 = "mouse RBUTTONDOWN"
            Case WM_LBUTTONUP
                Form1.Text1 = "mouse LBUTTONUP"
            Case WM_LBUTTONDOWN
                Form1.Text1 = "mouse LBUTTONDOWN"
            Case WM_MOUSEWHEEL
                Form1.Text1 = "mouse MOUSEWHEEL"
          End Select
        End If    If code <> 0 Then
            LowLevelMouseProc = CallNextHookEx(0, code, wParam, lParam)
        End If
      
    End Function
    Public Function LowLevelKeyboardProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        If code = HC_ACTION Then
            Select Case wParam
                Case WM_KEYDOWN
                    Form1.Caption = "key down"
                Case WM_KEYUP
                    Form1.Caption = "key up"
            End Select
        End If
            
        If code <> 0 Then
            LowLevelKeyboardProc = CallNextHookEx(0, code, wParam, lParam)
        End If
    End Function
      

  4.   

    Option ExplicitPrivate Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
    Private Const VK_LBUTTON = &H1
    Private Const VK_RBUTTON = &H2Private Sub Form_Load()
        Timer1.Interval = 100
    End SubPrivate Sub Timer1_Timer()
        If GetAsyncKeyState(VK_LBUTTON) Then
            Label2.Caption = "Left Click"
        ElseIf GetAsyncKeyState(VK_RBUTTON) Then
            Label2.Caption = "Right Click"
        Else
            Label2.Caption = ""
        End If任何位置
      

  5.   

    GetCursorPos得到位置
    GetAsyncKeyState得到按键