我需要捕获窗体中的鼠标消息,也就是无论在窗体中单击某个控件,都能得到其鼠标的消息,无论是有hwnd或是没有hwnd
解决方案 »
- 我想在局域网中实现用VB访问SQL Server数据库,用的是ODBC连接方式,求助!
- 这样一个问题>?
- 如何取windwos登录用户所属的组,请高人指点!
- 怎样根据IP地址得到机器名称??
- 大家好我想把数据保存到excel中。 怎么办?
- 非技术版问题解答以及VB版面部分斑竹的介绍
- 如何测量某个网址或ip是否可以连接,以及连接速度
- 怎么样获得窗体上所有的控件然后给它们统一gotfocus,lostfocust
- 为什么 VB6.0 在 Win XP 中没有“添加 Data Report”以及“添加 DataEnvironment”这两项?
- 怎么把Opendialog第一次显示放在屏幕中央?
- 如何使picturebox控件可以容纳任何大小的图片。
- 关于保存内存数据的问题
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
idHook是钩子类型,如WH_KEYBOARD捕捉键盘消息,而WH_MOUSE捕捉鼠标消息。hmod用于全局钩子,VB要实现钩子,必须设为0。dwThreadId用于线程钩子VB中可以设置为App.ThreadID。lpfn为钩子函数,在VB中可以使用AddressOf获得钩子函数的地址。这个函数因为钩子类型不同而有所不同。
Dim preWndProc As Long
Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print Msg
Select Case Msg
End Select
WndProc = CallWindowProc(preWndProc, hwnd, Msg, wParam, lParam)
End FunctionSub UnHook(lHwnd As Long)
SetWindowLong lHwnd, GWL_WNDPROC, preWndProcEnd SubSub Hook(lHwnd As Long)
preWndProc = SetWindowLong(lHwnd, GWL_WNDPROC, AddressOf WndProc)End Sub