首  页
站长信箱
868搜索
网站登录
免费计数器
免费留言本
IP来源查询
网站技术教程
网站流量统计
文章探索:   分类:    关键字:  
    什么?你还在找兼职?上兼客吧,现在兼客吧平台太火了,知名度和诚信度也很高,注册就送0.5元现金,满3元就能提现,马上到账了!最低3元就能提现,大家可以注册下试试!注册地址:http://www.jiankeba.com/computeryc1688
  + 栏目导航
  + 相关文章
文本框中光标位置的获得
用VB导入导出你的IE收藏夹
VB应用程序访问SQL Server方法..
VB访问SQL Server数据库技术全..
自动上网抓数据的机器人
自己的IE——用VB制作浏览器
VB中如何保存Webbrowser中的整..
在VB中该如何控制其它程序的弹..
保存webbrowser中的HTML内容
破译动网验证码的简单方法
轻松获取QQ密码
VB.NET获取硬盘序列号的方法
WEBBROWSER 技巧一(收藏)
VB自动登陆网络站点详解(二)..
获取webbrowser控件网页的源码
WebBrowser控件说明
关于用VB做更漂亮的窗体的思..
VB中访问存储过程的几种办法
VB6中改变屏幕的分辨率和刷新频..
VB编写一个能显示百分比的自定..
公农历转换VB类
VB.NET窗口渐淡关闭
使用VB实现邮箱自动注册(二)..
VB.NET轻松实现任务栏程序
VB.NET启动外部程序
利用vb实现图片上传
VB实现局域网内的文件传输
VB 一个Function传回多个值
在VB中实现多线程
VB 手机号码编码程序

技术教程 -> VB教程 ->  
VB自动登陆网络站点详解(二):Inet控件与WebBrowser控件配合使用
来源:转载   人气:6613   录入时间:2006/5/5


    
    URL 帐号 密码 其它参数
   SOHU邮箱 http://login.sohu.com/chkpwd.php UserName Password  
   网易通行证 http://reg4.163.com/CheckUser.jsp username password  
   CSDN通行证 http://www.csdn.net/member/logon.asp login_name password cookietime=0&x=42&y=10
    
   
   表格中的参数就是按照前面介绍的方法得到的,在程序中将要用到。
   
   先说明一点, WebBrowser也是可以直接POST数据给Web服务器的,我将在第四部分给出代码。这里先看看Inet与WebBrowser相互配合的效果。
   
   新建一个工程,部件中勾选中“Microsoft Internet Transfer Controls 6.0”、“Microsoft Internet Controls”,依次添加Inet1、WebBrowser1、Text1、Text2、Combo1在窗体上,可以把WebBrowser1适当拉大一点,将各控件位置安排好(可以参考运行后的图片),下面是代码:
   
   Dim URL1(2) As String: Dim URL2(2) As String
   
   Dim C1(2) As String: Dim C2(2) As String: Dim C3(2) As String
   
   Private Sub Form_Load()
   
   Text1.Text = ""
   
   Text2.Text = ""
   
   Text2.PasswordChar = "*"
   
   Combo1.AddItem "SOHU邮箱", 0
   
   Combo1.AddItem "网易通行证", 1
   
   Combo1.AddItem "CSDN通行证", 2
   
   Combo1.AddItem "请选择一个登陆", 3
   
   Combo1.Text = Combo1.List(3)
   
   URL1(0) = "http://login.sohu.com/chkpwd.php": URL2(0) = "http://www34.mail.sohu.com/control/entry"
   
   URL1(1) = "http://reg4.163.com/CheckUser.jsp": URL2(1) = "http://reg4.163.com/Main.jsp?"
   
   URL1(2) = "http://www.csdn.net/member/logon.asp": URL2(2) = "http://www.csdn.net/Member/Passport.asp"
   
   C1(0) = "UserName": C2(0) = "Password": C3(0) = ""
   
   C1(1) = "username": C2(1) = "password": C3(1) = ""
   
   C1(2) = "login_name": C2(2) = "password": C3(2) = "cookietime=0&x=42&y=10"
   
   End Sub
   
   Private Sub Form_Resize()
   
   If Me.WindowState <> 1 Then
   
   WebBrowser1.Left = 10
   
   WebBrowser1.Width = Me.Width - 120
   
   WebBrowser1.Height = Me.Height - 800
   
   End If
   
   End Sub
   
   Private Sub Text2_KeyUp(KeyCode As Integer, Shift As Integer)
   
   If KeyCode <> 13 Then Exit Sub
   
   If Combo1.ListIndex = 3 Then MsgBox "请选择一个登陆": Exit Sub
   
   If Text1.Text = "" Then MsgBox "请输入用户名": Exit Sub
   
   If Text2.Text = "" Then MsgBox "请输入密码": Exit Sub
   
   Dim strFormData As String
   
   strFormData = C1(Combo1.ListIndex) + "=" + Text1.Text + "&" + C2(Combo1.ListIndex) + "=" + Text2.Text + "&" + C3(Combo1.ListIndex)
   
   Inet1.Execute URL1(Combo1.ListIndex), "Post", strFormData, "Content-Type: application/x-www-form-urlencoded "
   
   Do Until Inet1.StillExecuting = False '这里阻塞前面的Inet1,确保登陆成功之后再取页面,你可以将此Do取消了试一次。
   
   DoEvents
   
   Loop
   
   If Combo1.ListIndex = 1 Then
   
   WebBrowser1.Navigate URL2(Combo1.ListIndex) + C1(Combo1.ListIndex) + "=" + Text1.Text
   
   Else
   
   WebBrowser1.Navigate URL2(Combo1.ListIndex)
   
   End If
   
   End Sub
   
   大家可以挑选一个自己已经注册过的站点看看效果。
   
   
   
   可以看到,登陆成功之后, Inet与WebBrowser是可以保持住同一个Session对话的!不过当我们在WebBrowser中显示出来的页面上点击了一个连接之后,请求却不能成功(请读者自己试一下,在登陆成功的站点中任意点击一个与用户相关的连接,弹出来的将是一个“你没有登陆”的页面)。为什么?
   
   因为我们现在点击的连接还是使用IE(操作系统默认的浏览器)打开的,而IE请求页面的时候使用的是服务器新发送过来的Session,这个新的Session与你在WebBrowser中使用的Session也就是身份ID不一样,至少服务器是这么认为的,它以为是另一个没有登陆的用户。所以说Session的作用范围不是对整个客户机的,通过实际的代码可以很好的理解这一点。(可以利用这一点,使用代码在一台电脑上实现两个以上的用户同时登陆,甚至还能对同一主题进行无缝发言。)
   
   所以接下来我们要使页面继续停在WebBrowser中显示。因为很显然,既然WebBrowser与Inet是可以保持住同一个Session对话的,那么WebBrowser与WebBrowser内部自然也是可以的!
   
   要添加的代码很简单——
   
   Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)
   
   Dim frm2 As New Form2
   
   frm2.WebBrowser1.RegisterAsBrowser = True
   
   Set ppDisp = frm2.WebBrowser1.Object
   
   frm2.Show
   
   End Sub
   
   然后在工程中添加一个Form2,上面再放一个WebBrowser1,调整好位置,Form2的代码窗口添加上以下代码:
   
   Private Sub Form_Load()
   
   WebBrowser1.Silent = True
   
   End Sub
   
   
   Private Sub Form_Resize()
   
   If Me.WindowState <> 1 Then
   
   WebBrowser1.Left = 10
   
   WebBrowser1.Width = Me.Width - 120
   
   WebBrowser1.Height = Me.Height - 600
   
   End If
   
   End Sub
   
   Private Sub WebBrowser1_NewWindow2(ppDisp As Object, Cancel As Boolean)’这里为了避免在Form1中同样发生的事情。
   
   Dim frm2 As New Form2
   
   frm2.WebBrowser1.RegisterAsBrowser = True
   
   Set ppDisp = frm2.WebBrowser1.Object
   
   frm2.Show
   
   End Sub
   
   利用Inet发送登陆请求,WebBrowser浏览实际页面,的确是个很不错的构思,在登陆站点相对教少的情况下应该是没有什么问题的。但是这也会使事情变得更加复杂。除了不能缺少的POST地址(URL1)、帐号参数(C1)、密码参数(C2)、其它参数(C3)之外,还必须要有供WebBrowser请求浏览的页面地址参数(URL2)。 虽然只是多了一个参数,但却添加了很多麻烦(比如网易邮箱的请求页面是根据用户的帐号名自动生成的,不固定)。只有利用WebBrowser直接POST数据才能避免第四个参数。但是浏览器的界面以及功能却是一个比较麻烦的问题(除非你不嫌麻烦,自己再动手写一个)。



| 网站转让 | 站长信箱 | 网站登录 | 技术教程 | 免费计数器 | 免费留言本 | 868流量统计 | 好帮手网站营销 |
地址:广东省阳江市  联系电话:13725641179 杨先生
Copyright 2004-2019 868资源网- 版权所有    粤ICP备05007330号