




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用IE控件设计简易浏览器一、Microsoft Internet Controls控件可以用来制作简易浏览器。 先简介该控件。1.该控件有以下几个重要的方法: 1) GoHome :装入 Internet Explorer设定的起始页。 用法: object.GoHome以下1)6)用法相同。Object为IE控件名2) GoBack : 返回上一个页面。 3) GoForward:进入下一个页面。 4) Refresh:刷新页面。 5) Stop : 停止载入页面。 6) GoSearch:搜索页面。 7) Navigate : 装入页面。 用法: object.Navigate url,其中url为URL地址,如“http:” 2该控件有以下重要事件: 1) BeforeNavigate Event: 在每次装入页面前调用,声明如下: Private Sub object_BeforeNavigate(ByVal URL As String,ByVal Flags As Long, ByVal TargetFrameName As String, PostData As Variant, ByVal Headers As String, Cancel As Boolean) 其中URL参数为将要装入的页面地址。 2) StatusTextChang Event: 每次浏览器的操作状态改变时调用,声明如下: Private Sub WebBrowser1StatusTextChange(ByVal Text As String) 其中Text为浏览器的操作状态。 3) DownloadComplete Event:页面下载结束后调用,声明如下: Private Sub WebBrowser1DownloadComplete() 4) NavigateComplete Event:登录结束后调用,声明如下: Private Sub WebBrowser1NavigateComplete(ByVal pDisp As Object, URL As Variant) 二、用该控件制作浏览器的方法 下面介绍如何通过 Internet Explorer控件编程实现对WWW的访问。 1)首先加载“Microsoft Internet Control”和“Microsoft Windows Common Controls 6.0(SP3)”。然后新建一表单Form1,在Form1中添加Microsoft Internet Control控件显示页面 WebBrowser1。 2)在Form1中添加一个ToolBar控件ToolBar1和一个ImageList控件ImageList1,以实现对浏览器的操作。 在ToolBar中增加六个按钮。3)在Form1中添加一个ComboBox控件Combo1,用来输入页面地址。 4)在Form1中添加Label控件Label1,用来显示当前浏览器操作状态。 5)在Form1中添加Label控件Label2,其Caption属性为“地址:”放在ComboBox 控件之前。 程序基本代码如下:Private Sub FormLoad() On Error Resume Next Me.Show ToolBar1.Refresh FormResize WebBrowser1.GoHome End Sub Private Sub ComBo1Click() WebBrowser1.Navigate ComBo1.Text End Sub Private Sub Combo1KeyPress(KeyAscii As Integer)浏览输入的页面 On Error Resume Next If KeyAscii = 13 Then 如果是回车,则浏览网页ComBo1Click End If End Sub Private Sub WebBrowser1BeforeNavigate(ByVal URL As String, ByVal FlagsAs Long,ByVal TargetFrameName As String, PostData As Variant, ByVal HeadersAs String, Cancel As Boolean)将当前显示的页面的URL地址显示在 ComBo1上 On Error Resume Next ComBo1.Text=URL End Sub Private Sub WebBrowser1DownloadComplete() On Error Resume Next Me.Caption=WebBrowser1.LocationName End Sub Private Sub WebBrowser1StatusTextChange(ByVal Text As String) On Error Resume Next Label1.Caption = Text Label1显示当前页面装入情况End Sub Private Sub WebBrowser1NavigateComplete(ByVal pDisp As Object, URL As Variant) On Error Resume Next Dim i As Integer Dim bFound As Boolean Me.Caption=WebBrowser1.LocationName For i=0 To Combo1.ListCount1 If Combo1.List(i)=WebBrowser1.LocationURL Then bFound=True Exit ForEnd If Next i If bFound Then Combo1 .RemoveItem i End If Combo1.AddItem WebBrowser1.LocationURL, 0 Combo1.ListIndex=0 End Sub Private Sub ToolBar1ButtonClick(ByVal Button As Button) On Error Resume Next Select Case Button.Key Case Back WebBrowser1.GoBack Case Forward WebBrowser1.GoForward Case Refresh WebBrowser1.Refresh Case Home WebBrowser1.GoHome Case Search WebBrowser1.GoSearch Case Stop timTimer.Enabled=False WebBrowser1.Stop Me.Caption=WebBrowser1.LocationName End Select End Sub 现在,单击启动你就可以使用自己的浏览器了。该程序在Windows 98、Visual Basic 6.0下运行通过。FTP程序设计在windows中有一个控件Internet Transfer control可以提供FTP protocol,这里我们运用 Internet Transfer control来设计一个可以连接FTP Server的client程序,并将FTP Server上的bbb.txt文件下到本地。Step 1:程序设计新建一个Standard.EXE。在Project下,选择Property属性选项,在general选项下将Project Name改为FTP client。屏幕的Form上加入一个Internet Transfer control,取名为Inet1。将Inet1 property的参数设置如下:Accesstype=2-icnamedproxy下面的内容也可以象其它FTP程序一样,新开一个窗口设置参数。Username=davidpassword=2333334protocol=2-icFTPproxy=5:8080我们在此将Username及password设置好,当我们Login进入FTP Server时,Server将会直接跳过输入Username和password的屏幕。加入一个TextBox control,取名为FTPgetfile。加入两个Button control,取名为FTPget和FTPLink,分别将其Caption改为FTPget和 FTPLink。在FTPLink _Click()中加入以下程序代码:Private Sub FTPLink _Click()Inet1.excute FTP End SubExecute是Internet Transfer control提供的一个用来执行FTP公用程序的method,我们可以在它的后面加入FTP的命令,这样我们就可以使用任何熟悉的FTP公用程序来完成工作。假定FTP Server地址是,所以我们在FTP命令后面填入这个地址。接着在FTPget _Click()中加入以下程序代码:Private Sub FTPLink _Click()Inet1.excute GET aaa.txt c:bbb.txtEnd Sub这个动作是将FTP Server上的aaa.txt文件传送到client端。 其它FTP命令,如上传文件put,更改属性chmod。大家可以参考UNIX相关参考手册。POP3协议及邮件检查、接收程序POP3(Post Office Protocol)邮局协议简介:POP3协议规定,客户端Client与服务器Server联系,依照如下的协议:1) 按TCP/IP协议,以110端口进行联系。即需要设置三个属性(第三个属性是Server IP地址)2) Server收到连接请求后,发送OK表示建立连接。第3)6)步Server的应答信息与之相同。3) 发送USER用户名。这是正常登录所需的信息:用户名与密码4) 发送PASS密码。5) 发送STAT,获取邮箱信息。6) 发送RETE邮件序号,收取指定邮件。7) 发送DELE邮件序号,删除指定邮件。8) 最后QUIT退出并CLOSE释放连接。按下表所示设置各控件的属性。控件类型控件名称控件作用TextboxtxtHost用于输入邮件服务器的名称或地址TextboxtxtUserName输入用户名TextboxtxtPassword输入密码TextboxtxtBody显示邮件内容ListviewlvMessages显示邮件清单Command ButtoncmdCheckMail用于启动接收并显示邮件的子程序Command ButtoncmdExit退出程序将名为txtBody的文本框的Multiline属性设为True,Scrollbars属性设为3-Both。选择ListView控件,打开其属性对话框,在“列首”标签页中插入四个列,文本分别为: From, Subject, Date, Size,然后将该控件的View属性设为3-lvwReport。 直观的界面显示你是如何使用本程序的。首先输入邮件服务器的名称或地址,然后是你的用户名和密码。最报按检查邮件按钮。接下来,我们就会看到在ListView中显示的邮件列表了。点选其中的一项,邮件的内容就会显示在下面的文本框中。从程序的外观及VB由事件驱动的本质,我们可以猜出我们只需要处理两个事件:cmdCheckMail_Click和lvMessages_ItemClick.至于cmdExit中的事件我想就不必说了。先别急,让我们一步步来看看本程序的代码是怎样的。首先看看“检查邮件”按钮。当你按下这个按钮后,程序会首先检查文本框中的内容,然后调用Winsock的Connect方法连上远程服务器。下面是程序代码:Private Sub cmdCheckMail_Click()检查除txtBody之外所有文本框的内容是否为空For Each c In ControlsIf TypeOf c Is TextBox And c.Name txtBody ThenIf Len(c.Text) = 0 ThenMsgBox c.Name & cant be empty, vbCritical:Exit SubEnd IfEnd IfNextm_State = POP3_Connect改变当前进程状态的值Winsock1.Close关闭socket以防它已被另一个进程打开Winsock1.LocalPort = 0重置 local port的值,Windows Socket会自动寻找一个新值这样做是为了防止出现 地址正在被使用的错误,这种情况通常出现在Winsock控件已被前一个进程所使用Winsock1.Connect txtHost, 110POP3服务器通常用端口110来等待连接请求End Sub 除了下面这个语句之外,其它都一目了然。 m_State = POP3_Connect 现在就让我来解释一下这个语句。当触发了cmdCheckMail_Click事件后,所运行的程序代码的目的是要连上远程邮件服务器。下面要进行的操作就转由在Winsock控件的DataArrival事件中的代码来控制了。每次当Winsock收到数据时,都会触发DataArrival事件。根据已收到的数据和你所发出的命令,程序才知道应执行在该事件中的哪一部分代码,以真正完成数据的接收。 为了让程序记住你上次发出的命令,或者说当前进程的状态,我们使用了m_State变量。该变量存放你事先定义好的一个特殊的数据类型:POP3States的值。 Private Enum POP3States POP3_Connect POP3_USER POP3_PASS POP3_STAT POP3_RETR POP3_DELE POP3_QUITEnd Enum下面是Winsock的DataArrival事件中的代码。该代码的绝大部分是注释以向你解释程序所做的每一步。如果你觉得闷的话就跳过不看就是了。 Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim strData As StringStatic intMessages As Integer 要下载的消息数(也就是邮件数)Static intCurrentMessage As Integer 已下载的消息数Static strBuffer As String 正在下载的消息的缓冲Winsock1.GetData strData将收到的数据存放在strData变量中If Left$(strData, 1) = + Or m_State = POP3_RETR Then 如果来自服务器的回应的第一个字符为”+”,表明服务器已收到你发出的命令并等待下一个命令 如果服务器返回字符串的第一个字符为”-“,那我们就什么也不做。操作被转到ELSE后的代码。 当接收数据时,来自服务器的字符串的第一个字符就可能不是加号或减号,所以要用第二个条件 m_State = POP3_RETR (正在接收消息的状态)Select Case m_State Case POP3_Connect intMessages = 0 重置消息数 m_State = POP3_USER 改变进程状态 向服务器发出带参数的USER命令,参数是信箱名,别忘了在命令的最后加上vbCrLf Winsock1.SendData USER & txtUserName & vbCrLf 这是本次事件的结束,下次开始跳过上一部分,而从下面开始执行 Case POP3_USER部分 Case POP3_USER 如果用户名检查通过就进行下一部分 m_State = POP3_PASS改变进程的状态 向服务器发送PASS命令,以你的密码为参数 Winsock1.SendData PASS & txtPassword & vbCrLf Case POP3_PASS 如果服务器通过了你的身份验证,我们就可以向服务器发送STAT命令了 作为对STAT的回应,服务器会传回你邮箱中的消息数及大小 m_State = POP3_STAT 现在发送STAT命令 Winsock1.SendData STAT & vbCrLf Case POP3_STAT 服务器对STAT的回应看上去象这样:+OK 0 0 (邮箱中没有邮件)或 +OK 3 7564 (邮箱中有邮件).显然,我们必须找到来自服务器返回的字符串中的第一个数字 intMessages = CInt(Mid$(strData, 5, InStr(5, strData, ) - 5) If intMessages 0 Then 如果邮箱中有邮件 m_State = POP3_RETR 改变进程的状态 intCurrentMessage = intCurrentMessage + 1 Winsock1.SendData RETR 1 & vbCrLf 向服务器发送RETR命令,接收第一条消息 Else 如果邮箱中没有邮件就断开同服务器的连接结束进程 m_State = POP3_QUIT Winsock1.SendData QUIT & vbCrLf MsgBox 你的邮箱中没有邮件!, vbInformation End If Case POP3_RETR 在接收邮件时执行下面执行下面的代码 邮件可能会很大,并触发多次DataArrival事件,接收到的数据被存放在 strBuffer变量中 strBuffer = strBuffer & strData If InStr(1, strBuffer, vbLf & . & vbCrLf) Then判断消息的结束。邮件以小数点结尾 邮件下载完毕,删除由服务器返回的第一行字符串 strBuffer=Mid$(strBuffer, InStr(1, strBuffer, vbCrLf)+2) strBuf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论