请教VB API高手

project21 2000-05-31 05:46:00
如何截取form以外的鼠标消息?
例如,我在屏幕任何位置点击鼠标, 在form1.text1
里显示标动作
...全文
149 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Janven 2000-06-01
  • 打赏
  • 举报
回复
to jing:
Msg = WM_NCHITTEST仅仅是鼠标在窗体非工作区触发的消息

得用钩子才能达到PROJECT21的要求,有关钩子方面的东东网上大把。自己找吧



jing 2000-06-01
  • 打赏
  • 举报
回复
Private Sub Form_Load()
prevWndProc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf WndProc
End Sub

Private Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hWnd, GWL_WNDPROC, prevWndProc
End Sub

module里:
Option Explicit

Public Const GWL_WNDPROC = (-4)

Public Const WM_NCHITTEST = &H84
Public Const HTCLIENT = 1
Public Const HTCAPTION = 2

Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Public prevWndProc As Long

Function WndProc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WndProc = CallWindowProc(prevWndProc, hWnd, Msg, wParam, lParam)
If Msg = WM_NCHITTEST Then
处理。。。
End If
End Function

希望能有用:))
载自lttletao回复



TopHead 2000-06-01
  • 打赏
  • 举报
回复
像jing那样做可能不行,应该是要做全局钩子,我这里有一个这样的程序,不过钩子是用vc写的,没有源代码,调用部分是vb写的,有源代码,如需要的话,告诉我。
zjdisy 2000-06-01
  • 打赏
  • 举报
回复
其实就是要让VB能截获windows的消息,可通过API做到,网上有关这种API的文章大把有的是.

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧