vb对webbrowser弹出对话框发送一个“回车”
翻遍了网络也没有找到一个解决办法,现在奉上所有分分,来到万能的csdn求解决方案!
貌似可以写一个附带程序来处理弹出的对话框,但苦于我水平有限,不知从何下手。求比较详细的实例。
[最优解释]
Option Explicit
Dim lngWindowHwnd As Long
Dim lngButton_0_Hwnd As Long
Dim lngButton_1_Hwnd As Long
Dim lngButton_2_Hwnd As Long
Dim lngButton_3_Hwnd As Long
Dim lngButton_4_Hwnd As Long
Dim lngButton_5_Hwnd As Long
Dim lngButton_6_Hwnd As Long
Dim lngButton_7_Hwnd As Long
Dim lngButton_8_Hwnd As Long
Dim lngButton_9_Hwnd As Long
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
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 Sub Command1_Click()
Command1.Caption = CStr(CLng(Command1.Caption) + 1)
End Sub
Private Sub Form_Load()
Command1.Caption = "0"
Timer1.Interval = 5000
lngWindowHwnd = FindWindow(vbNullString, "计算器")
lngButton_0_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "0")
lngButton_1_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "1")
lngButton_2_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "2")
lngButton_3_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "3")
lngButton_4_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "4")
lngButton_5_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "5")
lngButton_6_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "6")
lngButton_7_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "7")
lngButton_8_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "8")
lngButton_9_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "9")
End Sub
'按下鼠标左键马上松开就完成了一次单击
Private Sub Timer1_Timer()
Dim lngP As Long
lngP = PostMessage(lngButton_1_Hwnd, WM_LBUTTONDOWN, &H0, &H0) '按下鼠标左键
lngP = PostMessage(lngButton_1_Hwnd, WM_LBUTTONUP, &H0, &H0) '松开鼠标左键
End Sub
这是一个查找计算器的,并模拟点击计算器的代码,你可以参照这个改写。
lngWindowHwnd = FindWindow(vbNullString, "计算器")
这句可以改写为:lngWindowHwnd = FindWindow(vbNullString, "你的对话框的标题")
lngButton_0_Hwnd = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "0")
这句可以改写为:lngHWND = FindWindowEx(lngWindowHwnd, &H0, vbNullString, "确定")
来查找“确定”按钮的句柄
[其他解释]
可以的。
Private Sub Command1_Click()
Static count As Integer
Dim vDoc, vTag, mType As String, mTagName As String
Dim i As Integer
Timer1.Enabled = True
Set vDoc = WebBrowser1.Document
For i = 0 To vDoc.All.length - 1
Debug.Print vDoc.All(i).TagName
If UCase(vDoc.All(i).TagName) = "INPUT" Then
Set vTag = vDoc.All(i)
mType = LCase(vTag.Type)
Select Case mType
Case "text"
Select Case LCase(vTag.Name)
Case "usr"
vTag.Value = Text2
End Select
Case "password"
Select Case LCase(vTag.Name)
Case "pwd"
p = List1.List(count)
vTag.Value = p
count = count + 1
End Select
Case "image"
If LCase(vTag.Value) = "登录" Then‘此处可以扑捉网页控件希望你能看懂
vTag.Select
vTag.Click
On Error Resume Next
'Exit Sub
End If
End Select
End If
Next i
[其他解释]
你这是自动填表的代码,我懂,我要的是在网页弹出对话框时,如何点击对话框上的确定,或模拟键盘发送一个“回车”。
[其他解释]
补充一点,弹出的对话框有两个按钮,一个确定,一个取消。
[其他解释]
思路:
1、使用FindWindowEx来查找这个对话框的按钮的句柄
2、使用SendMessage或PostMessage来发送点击消息给这个按钮
[其他解释]
十分感谢,分分全部奉上!
csdn果然是万能的。
[其他解释]
看看 !十分感谢