用VB点击其他程序上按钮实现单击操作(用FindWindow和SendMessage)

想用VB程序实现点击其他程序上按钮单击操作,如点击Form1的command2按钮,查了一下,用了以下代码,但还是差一步,哪位大神指点一下:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal _
wParam As Long, lParam As Any) As Long

Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202
'以上是声明和定义常量

Private Sub Command1_Click()
Dim hwd As Long
Dim hwd2 As Long
Dim send As Long
hwd = FindWindow(vbNullString, "Form1")
If hwd <> 0 Then MsgBox "找到Form1窗口!!!"
’下面的代码就不对了,哪位给指点指点,感激不尽!!!
hwd2 = FindWindowEx(hwd, WM_LBUTTONDOWN, BM_CLICK, ByVal &H10001)

send = SendMessage(hwd2, WM_LBUTTONDOWN, Command1, ByVal &H10001)

send = SendMessage(hwd2, WM_LBUTTONDOWN, Command1, ByVal &H10001)

send = SendMessage(hwd2, WM_LBUTTONUP, Command1, 0)

send = SendMessage(hwd, BM_CLICK, 0&, 0&)

End Sub

第1个回答  2013-10-01

可能后面的参数不对,参考一下我的代码,原创

追问

你的代码也不能调用计算器的按钮,只能打开计算器,不能操作计算器的按钮,我的是Win7系统。

追答

我这里XP下运行没问题

追问

恩,最终发现win7的计算机比较诡异,这个代码不行,不过这个代码最后还是对我有点启发。另外提醒大家编这类程序需要spy++帮助查看句柄标题之类的。

本回答被提问者采纳
第2个回答  2013-10-01

我这有个VBAPI的文档你可以看下,如果鼠标左键不行的话可以尝试发送回车键

相似回答