vb关于后台操作webbrowser,模拟键盘填写表单的问题(需要按方向键和tab键)
不能直接给表单的元素赋值,因为网页相当复杂.也不能用sendkey因为程序需要最小化,然后电脑继续干其他事情...用SendMessage之类的,但是我找了好多资料,都无...
不能直接给表单的元素赋值,因为网页相当复杂.也不能用 sendkey 因为程序需要最小化,然后电脑继续干其他事情...用SendMessage之类的,但是我找了好多资料,都无法按tab或者方向键...希望测试以后再把代码发出来
展开
4个回答
展开全部
为什么一定要模拟键盘填写表单呢?直接给表单的元素赋值不行吗?这才是正宗的VB后台控制WebBrowser的方法。
比如网页表单上有如下这个文本框:
<input id=username name=username type=text value="">
那么VB中可以这样直接赋值:
WebBrowser1.document.getElementById("username").Value = "myname"
或者:
WebBrowser1.document.getElementsByName("username")(0).Value = "myname"
或者:
WebBrowser1.document.getElementsByTagName("input")(0).Value = "myname" '假定这个文本框是网页上的第一个input
其他表单元素可以用上述类似的方法逐一赋值。
最后,找到submit按钮执行click方法即可提交表单了。如果submit按钮有id或name就最好办了,比如表单上的submit按钮是这样的:
<input id=submit1 type=submit value="提交">
那么VB中可以这样:
WebBrowser1.document.getElementById("submit1").Click
如果没有id或name就稍微复杂一些:
Dim objs As Object, obj As Object
Set objs = WebBrowser1.document.getElementsByTagName("input")
For Each obj In objs
If obj.Type = "submit" Then
obj.Click
Exit For
End If
Next
比如网页表单上有如下这个文本框:
<input id=username name=username type=text value="">
那么VB中可以这样直接赋值:
WebBrowser1.document.getElementById("username").Value = "myname"
或者:
WebBrowser1.document.getElementsByName("username")(0).Value = "myname"
或者:
WebBrowser1.document.getElementsByTagName("input")(0).Value = "myname" '假定这个文本框是网页上的第一个input
其他表单元素可以用上述类似的方法逐一赋值。
最后,找到submit按钮执行click方法即可提交表单了。如果submit按钮有id或name就最好办了,比如表单上的submit按钮是这样的:
<input id=submit1 type=submit value="提交">
那么VB中可以这样:
WebBrowser1.document.getElementById("submit1").Click
如果没有id或name就稍微复杂一些:
Dim objs As Object, obj As Object
Set objs = WebBrowser1.document.getElementsByTagName("input")
For Each obj In objs
If obj.Type = "submit" Then
obj.Click
Exit For
End If
Next
更多追问追答
追问
不行,因为网页相当复杂,而且还加密了的,找那些表单名太麻烦!
追答
用火狐浏览器的FireBug工具分析一下网页就可以很容易找到表单元素名称的。或者你把网址告诉我,我看看。
展开全部
用 SendKeys啊,具体用法可以网上搜搜,【发送按键之前要先让 接收按键的窗体或控件激活】
例:
再来理解SendKeys "{Home}+{End}"你看看会有什么结果
用这个例子
Private Sub Timer1_Timer()
Text1.SetFocus
SendKeys "{Home}+{End}"
End Sub
会发现TEXT1中的文字全选了
例:
再来理解SendKeys "{Home}+{End}"你看看会有什么结果
用这个例子
Private Sub Timer1_Timer()
Text1.SetFocus
SendKeys "{Home}+{End}"
End Sub
会发现TEXT1中的文字全选了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'使用本代码需要Ctrl+T里面勾选Microsoft Internet Control 6.0,并在窗体上画一个,默认名称是WebBrowser1
'然后添加一个文本框Text1和一个按钮Command1
Private Sub Command1_Click()
WebBrowser1.Document.getElementById("su").Click
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate "www.baidu.com"
End Sub
Private Sub Text1_Change()
WebBrowser1.Document.getElementById("kw").Value = Text1.Text
End Sub
'然后添加一个文本框Text1和一个按钮Command1
Private Sub Command1_Click()
WebBrowser1.Document.getElementById("su").Click
End Sub
Private Sub Form_Load()
WebBrowser1.Navigate "www.baidu.com"
End Sub
Private Sub Text1_Change()
WebBrowser1.Document.getElementById("kw").Value = Text1.Text
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用这个例子
Private Sub Timer1_Timer()
Text1.SetFocus
SendKeys "{Home}+{End}"
End Sub
会发现TEXT1中的文字全选了
Private Sub Timer1_Timer()
Text1.SetFocus
SendKeys "{Home}+{End}"
End Sub
会发现TEXT1中的文字全选了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询