关于鼠标的按下和抬起事件,该如何处理

关于鼠标的按下和抬起事件
大家都知道在VB里的控件都有MouseDown和MouseUp事件,但是这些事件都是在该控件上点的时候才有效,有没有办法让这些事件可以在全局有效呢。
比如让我运行程序1后,在任何地方按下鼠标(包括程序1在后台台的时候),Label1 = "1";抬起Label1 = "2"。
这个可以实现么?

------解决方案--------------------
利用鼠标类的函数,如GetCursorPos,mouse_event,看看跟鼠标有关的api函数把,好久没用vb了,都忘记完了,希望对你还有点帮助
------解决方案--------------------
不难,可以在程序1中设置钩子,捕获鼠标按下和鼠标弹起消息再设置Label1.caption=1或2
http://download.csdn.net/source/1860777
------解决方案--------------------
直接丢个鼠标HOOK就行了.
------解决方案--------------------
全局鼠标构子:
先添加一个模块Module1
VB code
 Option Explicit
  Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
  Private Declare Function PtInRect Lib "user32" (lpRect As RECT, ByVal X As Long, ByVal Y As Long) 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 Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lparam As Any) As Long
  Private Const HC_ACTION = 0
  Private Const WH_MOUSE_LL       As Long = 14
  Private Const WM_MOUSEMOVE = &H200
    
  Public Type RECT
          Left   As Long
          Top   As Long
          Right   As Long
          Bottom   As Long
  End Type
    
  Private Type POINTAPI
        X   As Long
        Y   As Long
  End Type
    
    
  Private Type MSLLHOOKSTRUCT
          pt   As POINTAPI
          mouseData   As Long
          Flags   As Long
          time   As Long
          dwExtraInfo   As Long
  End Type
    

  Public hHook     As Long
  Public Sub EnableHook()
          If hHook = 0 Then
                hHook = SetWindowsHookEx(WH_MOUSE_LL, AddressOf HookProc, App.hInstance, 0)
          End If
  End Sub
  Public Sub FreeHook()
  If hHook <> 0 Then
        Call UnhookWindowsHookEx(hHook)
        hHook = 0
  End If
  End Sub
    
  Public Function HookProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lparam As Long) As Long
          If nCode < 0 Then
                HookProc = CallNextHookEx(hHook, nCode, wParam, lparam)
                Exit Function
          End If
          '你可以在这里加入需要处理的消息代码
          If wParam = WM_MOUSEMOVE Then
             Debug.Print "Move", wParam
          End If
  End Function