vb关于后台操作webbrowser,模拟键盘填写表单的问题(需要按方向键和tab键)

不能直接给表单的元素赋值,因为网页相当复杂.也不能用sendkey因为程序需要最小化,然后电脑继续干其他事情...用SendMessage之类的,但是我找了好多资料,都无... 不能直接给表单的元素赋值,因为网页相当复杂.也不能用 sendkey 因为程序需要最小化,然后电脑继续干其他事情...用SendMessage之类的,但是我找了好多资料,都无法按tab或者方向键...希望测试以后再把代码发出来 展开
 我来答
网海1书生
科技发烧友

2011-11-15 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12310 获赞数:26224

向TA提问 私信TA
展开全部
为什么一定要模拟键盘填写表单呢?直接给表单的元素赋值不行吗?这才是正宗的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
更多追问追答
追问
不行,因为网页相当复杂,而且还加密了的,找那些表单名太麻烦!
追答
用火狐浏览器的FireBug工具分析一下网页就可以很容易找到表单元素名称的。或者你把网址告诉我,我看看。
cnbubble
2011-11-15 · TA获得超过2606个赞
知道大有可为答主
回答量:1988
采纳率:83%
帮助的人:846万
展开全部
用 SendKeys啊,具体用法可以网上搜搜,【发送按键之前要先让 接收按键的窗体或控件激活】
例:
再来理解SendKeys "{Home}+{End}"你看看会有什么结果
用这个例子
Private Sub Timer1_Timer()
Text1.SetFocus
SendKeys "{Home}+{End}"
End Sub
会发现TEXT1中的文字全选了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zx001z7d53
2011-11-15 · TA获得超过2万个赞
知道大有可为答主
回答量:2.4万
采纳率:52%
帮助的人:5412万
展开全部
'使用本代码需要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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千年老妖之不老
2011-11-16 · 超过14用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:29万
展开全部
用这个例子
Private Sub Timer1_Timer()
Text1.SetFocus
SendKeys "{Home}+{End}"
End Sub
会发现TEXT1中的文字全选了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式