大家都知道在VB里的控件都有MouseDown和MouseUp事件,但是这些事件都是在该控件上点的时候才有效,有没有办法让这些事件可以在全局有效呢。
比如让我运行程序1后,在任何地方按下鼠标(包括程序1在后台台的时候),Label1 = "1";抬起Label1 = "2"。
这个可以实现么?
比如让我运行程序1后,在任何地方按下鼠标(包括程序1在后台台的时候),Label1 = "1";抬起Label1 = "2"。
这个可以实现么?
解决方案 »
- 关于sql排序的问题(急)
- 初学VB,对数据库问题很头疼,请大家帮忙解决一个小问题!
- 哪儿有vb对excel文件操作的技术文档,最好是看了马上可以用于编程的文章?急
- vb與foxpro數據庫的問題
- ***晕死了,flexgrid过期了,怎么办,连打包一个“安装程序”都不让完成***怎么????
- vb 中如何实现图像的平移
- 简单问题 array
- 关于资源的使用问题
- vb.net 与vb有什么区别吗?
- 请问如何删除指定路径下的指定文件,如c:\file\file.exe,谢谢。
- Do Untill EOF(1) 语法错误怎么修改
- 现实递增,这样好像不行,请高手帮忙,谢谢啊,急!!!!!!!!!!!!!
http://download.csdn.net/source/1860777
先添加一个模块Module1
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然后添加一个窗体进行测试,你可以在窗体内加入任意控件,看看鼠标在任意控件中这个模块是否能捕获到所有的事件
Option Explicit
Private Sub Form_Load()
EnableHook
End SubPrivate Sub Form_Unload(Cancel As Integer)
FreeHook
End Sub要达到楼主所要求的效果,楼主需进一步完善代码