首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

2012-01-20 
关于鼠标的按下和抬起事件大家都知道在VB里的控件都有MouseDown和MouseUp事件,但是这些事件都是在该控件上

关于鼠标的按下和抬起事件
大家都知道在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 

热点排行