1,486
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
'窗体中添加两个按钮
'
'点击其它软件中的按钮测试程序.
'
'By 嗷嗷叫的老马
'http://www.m5home.com/
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _
ByVal hWnd1 As Long, _
ByVal hWnd2 As Long, _
ByVal lpsz1 As String, _
ByVal lpsz2 As String) As Long
Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" ( _
ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Const WM_LBUTTONDOWN As Long = &H201
Private Const WM_LBUTTONUP As Long = &H202
Dim hDest As Long '目标按钮句柄
Private Sub Command1_Click()
'寻找按钮句柄
'
'具体代码内容根据软件的结构不同而不同,参考SPY++中目标软件的结构图
'
Dim hTmp As Long, hTmp2 As Long
hTmp = FindWindow("TFm", vbNullString)
If hTmp <> 0 Then
hTmp = FindWindowEx(hTmp, 0&, "TPageControl", vbNullString)
hTmp = FindWindowEx(hTmp, 0&, "TTabSheet", vbNullString)
hTmp2 = FindWindowEx(hTmp, 0&, "TPanel", vbNullString)
hTmp = FindWindowEx(hTmp, hTmp2, "TPanel", vbNullString)
hTmp = FindWindowEx(hTmp, 0&, "TGroupBox", vbNullString)
hTmp = FindWindowEx(hTmp, 0&, "TPanel", vbNullString)
hDest = FindWindowEx(hTmp, 0&, "TRzBitBtn", vbNullString)
If hDest <> 0 Then
MsgBox "成功找到句柄!"
Else
MsgBox "未找到句柄!"
End If
End If
End Sub
Private Sub Command2_Click()
If hDest <> 0 Then
SendClick hDest, 10, 10 '
Else
MsgBox "还未找到句柄!"
End If
End Sub
Private Sub Form_Load()
Command1.Caption = "查找句柄"
Command2.Caption = "发送单击消息"
End Sub
Private Function SendClick(hwnd As Long, mX As Long, mY As Long)
'发送点击消息
Dim I As Long
I = PostMessage(hwnd, WM_LBUTTONDOWN, 0, (mX And &HFFFF) + (mY And &HFFFF) * &H10000)
I = PostMessage(hwnd, WM_LBUTTONUP, 0, (mX And &HFFFF) + (mY And &HFFFF) * &H10000)
End Function
'模拟点击按钮,hWndTargetBtn是目标按钮的句柄
Call SendMessage(hWndTargetBtn, WM_LBUTTONDOWN, 0, 0)
Call SendMessage(hWndTargetBtn, WM_LBUTTONUP, 0, 0)