关于鼠标的按下和抬起事件,该如何处理
关于鼠标的按下和抬起事件
大家都知道在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里的控件都有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