vb.net

位置:IT落伍者 >> vb.net >> 浏览文章

VB.NET表单自动提交实现方案剖析


发布日期:2020年03月01日
 
VB.NET表单自动提交实现方案剖析

我们曾经在一篇文章中介绍过邮件自动注册中的修改代理服务器的应用不过要想实现这一功能的话还需要一个应用的实现那就是VBNET表单自动提交在这里我们就会为大家详细介绍这一应用技巧

前些天在网上看到有人需要邮箱自动注册的程序于是自己也写了一个在查资料的过程中我看到一些网友写的类似文章有一些是基于网络协议需要了解sessioncookie这些东西对于一个新手来说很繁琐等到把这些东西搞懂热情也消耗殆尽vb的优点就在于可以让那些对于计算机底层不是很了解的人迅速实现自己的程序设计我找到了一种比较简单的办法要求对HTML标记语言有所了解即可现在把自己的经验写出来于各位网友共享该方法也许不值一提也许对您有所帮助

我的办法就是利用控件WebBrowser我想很多人对它都很熟悉在新建一个工程之后您要做的是添加两个控件一个是WebBrowser另一个是Scriptlet这两个控件配合使用就可以完成这个任务了Scriptlet中的IHTMLDocument对象可以用来获得WebBrowser控件中的HTML文档这两个控件的名字在组件对话框里分别叫Microsoft HTML Object Library和Microsoft Internet Controls

这两个控件添加完成之后你还需要知道WebBrowser的一个事件DocumentComplete这个事件在整个网页下载完成之后触发也就是说在页面完成之后这个事件即被执行有了这些就可以顺利的实现注册了

下面以eyou网站的免费邮箱注册为例来实现我的程序设计新建标准工程后向Form中添加一个WebBrowser控件所有代码如下

Dim ii As Integer

Private Sub Form_Load()

WebBrowserNavigate ?

bgp=%CE%D%BD%D%CA%DC&bgp_enable=on

End Sub

Private Sub WebBrowser_DocumentComplete

(ByVal pDisp As Object URL As Variant)

Dim doc As IHTMLDocument

Set doc = WebBrowserDocument

Dim tmp As String

If InStr(docbodyinnerText 寻找一个新的用户名) > Then

tmp = sdfsdf + Trim(Str$(ii))

docAllItem(uid)focus

SendKeys tmp

SendKeys {enter}

End If

If InStr(docbodyinnerText 输入您的个人资料) > Then

docAllItem(Password)Value =

docAllItem(Confirm)Value =

docAllItem(FirstName)Value = tomcant

docAllItem(question)Value = what is your name

docAllItem(answer)Value = my name is ddd

docAllItem(year)Value =

docAllItem(month)Value =

docAllItem(day)Value =

docAllItem(day)focus

SendKeys {enter}

End If

If InStr(docbodyinnerText 申请邮箱成功) > Then

iiii = ii +

WebBrowserNavigate ?

bgp=%CE%D%BD%D%CA%DC&bgp_enable=on

End If

End Sub

Eyou的免费邮箱注册入口地址为?bgp=%CE%D%BD%D%CA%DC&bgp_enable=on所以要在Form_load事件中使用WebBrowser控件的Navigate方法

在eyou的注册入口页面完成之后WebBrowser_DocumentComplete即被执行在这个函数中主要有三个条件语句在三个条件语句之前有如下三句

Dim doc As IHTMLDocument

Set doc = WebBrowserDocument

Dim tmp As String

doc定义为IHTMLDocument对象用以取得WebBrowser的文档tmp字符串是循环注册中的用户名在VBNET表单自动提交的程序刚开始定义了ii这个integer变量在每次注册完成之后ii加附于tmp之后用以改变用户名

第一个条件语句如下

If InStr(docbodyinnerText 寻找一个新的用户名) > Then

tmp = sdfsdf + Trim(Str$(ii))

docAllItem(uid)focus

SendKeys tmp

SendKeys {enter}

End If

首先判断是否是注册入口页面通过InStr(docbodyinnerText 寻找一个新的用户名) > 语句实现docbodyinnerText即取得了该页面中的所有文字如果是则构造一个用户名

docAllItem(uid)focus使用户名文本框取得焦点其中uid是该文本框的ID这个ID的取得是通过查看HTML源代码得到的所以要求对HTML标记语言有所了解使用户名文本框取得焦点之后通过SendKeys函数模拟键盘向文本框发送tmp字符串这样用户名即填写完成之后发送回车键提交表单关于SendKeys函数的使用大家可查阅MSDN帮助

第二个条件语句首先判断改页面是否是个人资料填写页面然后填写个人资料其方法同填写用户名一致取得个文本框的ID后填写其值最后提交表单

最后一个条件语句判断邮箱注册成功后将ii加一然后将页面重新定位到注册入口页面至此一个循环完成

以上VBNET表单自动提交的代码即实现了自动注册提交

上一篇:c#(或vb.net)程序改进,可以提高性能

下一篇:VB.NET的新的面向对象能力