一点也不开玩笑的讲,中间加个延时^ ^。
另外,注意句柄和坐标系的关系。通常,传入窗口句柄也可以点击内部按钮,但坐标应该是窗体坐标系下按钮坐标。如果传入按钮句柄,那……随便吧。
Sub PostMouseClick(ByVal handle As IntPtr, ByVal x As Integer, ByVal y As Integer)
If handle <> IntPtr.Zero Then
Dim lParam As IntPtr = New IntPtr((y << 16) Or x)
Dim wParam As IntPtr = IntPtr.Zero
PostMessage(handle, WM_LBUTTONDOWN, wParam, lParam)
Threading.Thread.Sleep(100)
My.Application.DoEvents()
PostMessage(handle, WM_LBUTTONUP, wParam, lParam)
End If
End Sub
谢谢版主,请问如下两句SendMessage为什么完成不了Button2的单击呢,还差什么地方,如果是PostMessage就可以
'函数和常量定义
Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
Public Const WM_LBUTTONDOWN = &H201
'消息发送
SendMessage(windowshWnd1, WM_LBUTTONDOWN, 0, 0)
SendMessage(windowshWnd1, WM_LBUTTONUP, 0, 0)
'按扭代码
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
MsgBox("t1")
End Sub