1,488
社区成员
发帖
与我相关
我的任务
分享’-------------------------------------窗口代码
Private Sub Command1_Click()
MsgBox 1
End Sub
Private Sub Form_Load()
OldPrc = SetWindowLong(Command1.hwnd, -4, AddressOf CommandProc)
End Sub
‘-------------------------------------模块代码
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 SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public OldPrc As Long
Public Function CommandProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Debug.Print Hex(Msg)
If Msg = &H201 Or Msg = &H100 Then Exit Function
CommandProc = CallWindowProc(OldPrc, hwnd, Msg, wParam, lParam)
End Function
代码未测试,引用自:https://zhidao.baidu.com/question/522714025.html
如果是“表格控件”,好像各种表格控件都不行的。
印象中只有ListView控件,可以通过句柄、消息获取内容。
你首先要确定的是你说的这个“表格”究竟是什么控件。

要不然,它被别的窗口挡住时、在别的窗口中但又是在那个控件区域点了鼠标,你也认为“点击了”?
还有一个,“控件所在窗口”是可以拖动位置的,这样还需要每次获取“控件矩形”才行呢。
用Timer控件,不能“及时”反应,很可能是获取不到消息的。