第10章 网络及其他.docx

上传人:b****4 文档编号:3463007 上传时间:2022-11-23 格式:DOCX 页数:22 大小:100.55KB
下载 相关 举报
第10章 网络及其他.docx_第1页
第1页 / 共22页
第10章 网络及其他.docx_第2页
第2页 / 共22页
第10章 网络及其他.docx_第3页
第3页 / 共22页
第10章 网络及其他.docx_第4页
第4页 / 共22页
第10章 网络及其他.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

第10章 网络及其他.docx

《第10章 网络及其他.docx》由会员分享,可在线阅读,更多相关《第10章 网络及其他.docx(22页珍藏版)》请在冰豆网上搜索。

第10章 网络及其他.docx

第10章网络及其他

第10章网络及其他

第1节连接Internet

在Internet应用程序的开发中,VisualBasic引入了许多新的功能,例如,WebClass和DHTML(DynamicHyperTextMarkupLanguage)页面设计器等。

利用这些技术,可以轻松地创建各种动态的、高性能的Internet或Intranet应用程序。

10.1.1创建Internet浏览器

使用VisualBasic的WebBrowser控件,可以很容易制作一个Internet浏览器,用于浏览WWW(WorldWideWeb)站点、本地文件和ActiveX文件。

WebBrowser

是一个定制控件,其在ActiveX部件中的描述为“MicrosoftInternetControl”。

1.WebBrowser控件的属性

WebBrowser控件的主要属性,如表10.1所示。

表10.1WebBrowser控件的主要属性

属性

描述

LocationName

返回Web页面上的标题。

如果Web显示本地文件,则返回文件的完整路径

LocationURL

返回Web页面上的URL地址。

如果Web显示本地文件,则返回文件的完整路径

Document

如果存在活动的自动化文档,则返回这个自动文档

Type

返回文档对象的类型

Busy

如果正在进行某个地址访问时,则Busy值为真

例如,可用下面的代码判断Web浏览器是否正在工作:

PrivateSubTimer1_Timer()

IfWebBrowser1.BusyThen

Me.Caption="正在进行..."

Else

Timer1.Enabled=False

Me.Caption=WebBrowser1.LocationName

EndIf

EndSub

若Busy属性值为True,则在窗体的标题栏上显示“正在进行…”的提示,否则关闭定时器,窗体标题栏显示地址。

2.WebBrowser控件的方法、事件

WebBrowser控件为创建Web浏览器有关页面切换、过程控制等提供了多种方法,其中常用的有:

GoBack,GoForward,GoHome,GoSearch,Refresh,Stop,Navigate等。

GoBack方法和GoForward方法,分别在已浏览过的多个页面中切换到当前页的前一页、后一页,相当于IE浏览器中

功能。

例如切换到前一页的代码可写为:

WebBrowser1.GoBack

同样,Stop方法、Refresh方法、GoHome方法及GoSearch方法,分别相当于IE浏览器工具栏中

按钮的功能。

Navigate方法用于切换到URL(UniformResourceLocator)地址或HTML文件,其格式为:

对象.NavigateURL,[Flags],[TargetFrameName],[PostData],[Hearders]

其中,URL指定控件切换的URL,Flags指定页面的处理方法,TargetFrameName指定显示文档的帧名,PostData,Header分别是发送到服务器的字符串和HTTP(HyperTextTransferProtocol)头的补充信息。

Web浏览器控件与其他控件不同的是提供了许多与网络操作有关的事件:

∙BeforeNavigate:

从一个URL转换到另一个URL之前发生。

∙NavigateComplete:

转移到一个新位置后发生。

∙DownLoadBegin:

下载开始之前发生。

∙DownLoadComplete:

下载完成时发生。

∙ProgressChange:

进程改变时发生。

∙StatusTextChange:

InternetExplorer状态改变时发生。

∙TitleChange:

文档标题发生改变时发生。

∙NewWindow:

当超链接产生新窗口时发生。

【例10.1】利用WebBrowser控件创建一个Web浏览器,如图10.1所示。

图10.1浏览器窗体的设计

首先在窗体上添加一个ImageList控件、两个Toolbar控件,并在Toolbar2上放置一个ComboBox控件。

添加一个WebBrowser控件,添加一个菜单条,且文件菜单中应含有“打开”选项。

添加一个CommonDialog控件,设计其Filter属性为“HTML文件(*.htm)|*.htm|文本文件(*.txt)|*.txt|Word文件(*.doc)|*.doc|所有文件(*.*)|*.*”。

编写Toolbar1控件的ButtonClick事件代码:

PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)

OnErrorResumeNext

SelectCaseButton.Key

Case"back"'后退按钮

WebBrowser1.GoBack

Case"forward"'前进按钮

WebBrowser1.GoForward

Case"refresh"'刷新按钮

WebBrowser1.Refresh

Case"home"'主页按钮

WebBrowser1.GoHome

Case"search"'搜索按钮

WebBrowser1.GoSearch

Case"stop"'停止按钮

WebBrowser1.Stop

Me.Caption=WebBrowser1.LocationName

EndSelect

EndSub

Toolbar2工具栏中的“转到”按钮的Click事件代码,与ComboBox控件的KeyPress事件代码相似。

其中Combo1_KeyPress事件代码为:

PrivateSubCombo1_KeyPress(KeyAsciiAsInteger)

IfKeyAscii=13Then

WebBrowser1.NavigateCombo1.Text

Combo1.AddItemCombo1.Text

EndIf

EndSub

编写WebBrowser1的事件代码为:

PrivateSubWebBrowser1_NavigateComplete(ByValURLAsString)

DimiAsInteger,BFoundAsBoolean

Fori=1ToCombo1.ListCount-1

IfCombo1.List(i)=WebBrowser1.LocationURLThen

BFound=True

ExitFor

EndIf

Next

IfBFoundThenCombo1.RemoveItemi

Combo1.AddItemWebBrowser1.LocationURL,0

Combo1.ListIndex=0

EndSub

PrivateSubWebBrowser1_DownloadComplete()

OnErrorResumeNext

Me.Caption=WebBrowser1.LocationName

EndSub

与文本编辑器类似,应在Form窗体的Load,Resize事件过程中设计WebBrowser1的位置属性,以让其在任何时候都能充满窗体。

通过添加MDI窗体,还可以在浏览器中同时打开多个页面。

10.1.2使用VisualBasic收发电子邮件

发送和接收电子邮件,对于某些执行特殊任务的应用程序而言,是十分有用的功能。

例如,一个监视网络服务器资源使用情况的工具软件,若具有自动发送电子邮件的功能,那么当发现服务器资源使用已经接近事先设定的临界状态时,便可以向系统管理员发送一封告警邮件,从而使系统管理员能够及时地采取措施。

在VisualBasic中,应用程序可以通过调用微软公司的MAPI(MessagingApplicationProgrammingInterface),实现收发电子邮件的功能。

编制具有收发电子邮件功能的VB程序,需要使用两个实现电子邮件收发功能的核心控件:

MAPI会话控件和MAPI消息控件。

MAPI会话控件用于建立和控制一个Microsoft会话,MAPI消息控件用于创建和和收发邮件消息。

此外,程序必须运行在采用遵从MAPI的消息系统(如MicrosoftExchange,MicrosoftMail,Outlook等)环境中。

在ActiveX部件中选择“MicrosoftMAPIControl6.0”,单击“确定”按钮后,就把MAPISession

、MAPIMessages

控件添加到工具箱中了。

除属性窗口外,也可以在属性页或程序设计中设置两个控件的属性值,而且控件还提供了许多方法用于程序设计。

1.MAPI系统的建立和关闭

为了处理电子邮件,应先将MAPI系统打开,处理结束后再关闭系统。

MAPI系统的建立和关闭方法如下:

MAPISession1.SignOn'处理开始

MAPISession1.SignOff'处理结束

2.设置消息ID

打开MAPI系统并正常工作后,应使用MAPISession的SessionID属性,设置识别消息的标识码(ID:

Identifier)。

将该属性值与某一MAPIMessages控件的SessionID属性连接后,就能够通过MAPIMessages控件来处理消息,比如:

MAPISession1.SessionID=MAPIMessages1.SessionID

3.邮件组

使用Fetch方法可以读取收件箱的邮件,并将邮件收集在一起形成邮件组。

对邮件组可以用FetchMsgType按消息类别分类,或用FetchSorted进行排序。

另外,使用Fetch属性还可为未阅读的电子邮件设定标识。

例如,下面代码可做成已收到的邮件组:

MAPIMessages1.FetchUnreadOnly=False

MAPIMessages1.Fetch

4.邮件的指定

利用MAPIMessages控件的MsgCount属性可以显示邮件组中已收到的电子邮件的总数,MsgIndex则用于指定当前邮件的序号,有效序号从0开始。

使用邮件序号可以获取下列信息:

MAPIMessages1.MsgIndex=0'指定0号电子邮件

MAPIMessages1.MsgNoteText'电子邮件全文

MAPIMessages1.MsgSubject'电子邮件主题

MAPIMessages1.MsgOrigDisplayName'发信人姓名

MAPIMessages1.MsgDateReceived'发信日期

5.显示通讯簿

若要显示通讯簿,则可使用Show方法:

MAPIMessages1.Show

另外,使用Show方法还可以显示收件人详细信息,其代码为:

MAPIMessages1.ShowTrue

6.发送电子邮件

MAPIMessages控件管理收信缓冲区和发信缓冲区。

显示收信信息使用收信缓冲区,在收信缓冲区内存放收件箱内带序号的电子邮件。

创建电子邮件时则使用发信缓冲区,只要将MsgIndex属性设为-1,就可以生成发信缓冲区并处于激活状态,即可以进行电子邮件的发送操作。

例如,建立一个发送电子邮件界面,如图10.2所示。

图10.2发送电子邮件

其中,“发送”按钮的Click事件代码,可编写为:

WithMAPIMessages1

.MsgIndex=-1

.RecipDisplayName=Text1.Text

.MsgSubject=Text2.Text

.MsgNoteText=Text3.Text

.SessionID=MAPISession1.SessionID

.Send

EndWith

MsgBox"邮件发送完毕!

",,"发送邮件"

输入收件人的电子邮件地址后,单击“发送”按钮,即可将邮件发送出去,或放入到发信缓冲区(如Outlook的发件箱)中等待发送。

【例10.2】使用MAPI控件制作一个用于接收电子邮件的程序。

在窗体上添加4个标签分别用于显示邮件的日期、发件人、主题、接收邮件的总数及当前正在处理第几封邮件,1个文本框Text1用于显示邮件的内容,3个命令按钮用于浏览或关闭邮件。

添加MAPI控件MAPISession1,MAPIMessages1,并添加几个用于注释说明的标签,如图10.3所示。

图10.3接收电子邮件

首先需要使用MAPIMessages1控件的Fetch方法读取邮件,这个过程将把用户收件箱中所有未读的邮件全部装入MAPI控件中。

然后,检查MsgCount属性以确定通过Fetch方法读取的邮件的总数,并通过设置MsgIndex属性指定具体需要处理哪一封邮件。

程序代码及注释如下:

PublicSubDisplayMessage()'显示邮件的通用过程

Label4.Caption="总共"&_

LTrim(Str(MAPIMessages1.MsgCount))&"封邮件,这是第"&_

LTrim(Str(MAPIMessages1.MsgIndex+1))&"封邮件"

Label1.Caption=MAPIMessages1.MsgDateReceived

Label2.Caption=MAPIMessages1.MsgOrigDisplayName

Label3.Caption=MAPIMessages1.MsgSubject

Text1.Text=MAPIMessages1.MsgNoteText

EndSub

PrivateSubCommand1_Click()'上一封

IfMAPIMessages1.MsgIndex>0Then

MAPIMessages1.MsgIndex=MAPIMessages1.MsgIndex-1

DisplayMessage

Else

Beep

EndIf

EndSub

PrivateSubCommand2_Click()'下一封

IfMAPIMessages1.MsgIndex

MAPIMessages1.MsgIndex=MAPIMessages1.MsgIndex+1

DisplayMessage

Else

Beep

EndIf

EndSub

PrivateSubCommand3_Click()'关闭

MAPISession1.SignOff

UnloadMe

EndSub

PrivateSubForm_Load()

MAPISession1.SignOn

MAPIMessages1.SessionID=MAPISession1.SessionID

MAPIMessages1.FetchUnreadOnly=True

MAPIMessages1.Fetch

DisplayMessage

EndSub

在窗体加载过程中,窗体Load事件中的代码会读取新邮件,如果有新邮件,就显示第1个新邮件,如果有多个新邮件,则可以使用“上一封”和“下一封”命令按钮前后翻阅。

如果要读取收件箱中所有的邮件,只需在执行Fetch方法之前将FetchUnreadOnly属性设置为“False”,还可以使用MsgRead属性判别具体邮件是否读过。

10.1.3电话拨号

为了能够制作通信应用程序,VB提供了一个Communication控件,用于建立与串行口的连接,并通过串行口连接其他通信设备(如Modem)。

利用Communication控件,用户可以拨打电话号码、监视串行口的输入数据、创建完备的终端应用程序。

在ActiveX部件中选择“MicrosoftCommControl6.0”,便可以将Communication控件放入工具箱内,其名称为MSComm

通过属性窗口、属性页及程序代码均可设置MSComm控件的属性,该控件只提供了一个在发生通信事件和错误时触发的事件OnComm。

1.串行口的连接

要建立通信程序,首先应建立MSComm控件和串行口的连接。

用于通信连接MSComm控件的属性有:

∙Commport:

设置或返回通信的端口号。

默认值为1,可以设定1到16之间的任一数值,例如在使用调制解调器一般设为2。

∙Setting:

以字符串形式设置或返回波特率、奇偶校验、数据位和停止位。

例如,使用Modem时可设为“115200,n,8,1”。

∙PortOpen:

设置或返回通信端口的状态(打开或关闭)。

∙InputLen:

设置如何读出接收缓冲区的内容。

当设定为0时,使用Input属性可读出全部内容。

通过设置Handshaking属性,还可以指定在应用程序中使用的握手协议。

握手协议是一种内部的通信协议,通过该协议将数据从硬件端口传输到接收缓冲区。

2.使用调制解调器

端口设定好以后,还要确定Modem是否正常工作。

如果正常,则可进行数据的发送和接收操作了。

一般使用Output属性向调制解调器发出命令,而使用Input属性接收来自调制解调器的信号,例如:

MSComm1.Output="atdt"+Text1.Text+";"+Chr(13)

Text1.Text=MSComm1.Input

命令由“AT”开始字符串组成,其中“at”进行初始化连接,“d”进行拨号,“t”指定使用音频。

调制解调器收到命令后,给终端返回一个结果:

OK,NOCARRIER,BUSY等。

如果调制解调器返回“OK”,则表示正常工作。

调制解调器处理有时占用很多时间,在此期间键盘和鼠标输入的命令都是无效的。

为了防止发生这种情况,可以使用特定的程序解除占有,如DoEvents()函数,该函数的功能是:

一旦中止执行中的处理,则处理返回操作系统。

3.发送、接收缓冲区

端口打开后,就创建了接收和发送缓冲区。

MSComm控件中用于管理缓冲区的属性有:

∙InBufferSize,OutBufferSize:

指定接收、发送缓冲区的内存容量。

∙Rthreshold,SThreshold:

用于表示在OnComm事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。

∙Input:

用来保存和接收从接收缓冲区获取的数据。

∙InBufferCount:

用于获得接收缓冲区中字节的数目。

接收缓冲区每接收到一个字节,该属性值加1。

如果将该属性值设置为0,便将接收缓冲区清空。

∙Output:

用于向发送缓冲区发出命令或数据。

∙OutBufferCount:

用于监视发送缓冲区中字节的数目。

如果将该属性值设置为0,即可清空发送缓冲区。

例如,为建立一个电话拨号程序,可在窗体上放置一个Mscomm1用于设置通信系统,1个文本框Text1用于输入电话号码,2个命令按钮用于发送控制和取消发送,以及1个说明性的标签,如图10.4所示。

图10.4电话拨号

适当设置MSComm1的属性后,编写拨号按钮的Click事件代码如下:

PrivateSubCommand1_Click()

DimDialstrAsString,RecstrAsString

DimDmyAsInteger

IfText1.Text=""ThenExitSub

Cancels=False'用来判断是否单击取消按钮的公共变量

Command1.Enabled=False

Dialstr="atdt"+Text1.Text+";"+Chr(13)

OnErrorResumeNext

MSComm1.PortOpen=True

IfErr.Number<>0Then

MsgBox"Com2端口不能使用"

ExitSub

EndIf

MSComm1.InBufferCount=0

MSComm1.Output=Dialstr

Recstr=""

Do

Dmy=DoEvents()

IfMSComm1.InBufferCountThen

Recstr=Recstr+MSComm1.Input

IfInStr(Recstr,"OK")Then

MsgBox"呼叫成功,请继续后续操作"

ExitDo

EndIf

EndIf

IfCancelsThenExitSub'单击“取消”按钮

Loop

MSComm1.Output="ath"+Chr(13)'切断线路

MSComm1.PortOpen=False

Command1.Enabled=True

EndSub

在应用程序中,还可以利用OnComm事件和CommEvent属性捕获并检查通信事件和错误的值。

比如在接收和发送数据的过程中,常需捕获这些事件和错误,并以此做出响应。

第2节OLE及其应用

OLE(ObjectLinkingandEmbedding)技术可以使得VisualBasic应用程序能够很方便地使用Windows环境中的其他应用程序的功能。

它可以让我们在自己的程序中显示别的应用程序的数据,或从应用程序中的数据来启动与其相关的应用程序,以便进一步处理数据(如编辑文本、修饰图案等)。

链接一个对象,实际上是在应用程序中插入链接对象的占位符,而并非数据本身,当数据源改变时,链接程序中看到的数据内容也将发生改变。

嵌入一个对象,是与对象相关的全部数据都将被复制或纳入到嵌入的应用程序中,其他程序不能访问嵌入对象中的数据。

10.2.1OLE控件

利用工具箱中的OLE控件

可以在窗体上创建一个OLE对象,它可以显示各种不同的数据类型,如Word文档、电子表格、图表等。

1.设计时插入OLE对象

将OLE控件放置在窗体上,就会出现“插入对象”对话框,如图10.5所示。

图10.5“插入对象”对话框图10.6插入Excel工作表对象

选择“新建”单选按钮,并在“对象类型”列表框中选择一种对象类型,例如“MicrosoftExcel工作表”,单击“确定”按钮后,就会在窗体上显示出Excel工作表,如图10.6所示。

在运行程序时双击OLE控件,则会显示Excel工作表及菜单。

选择“从文件创建”单选按钮,出现的对话框如图10.7所示。

单击“浏览”按钮,可以从弹出的对话框中选择要装入OLE对象的文件。

如果选中“链接”复选框,表示这个OLE对象为链接对象,否则为嵌入对象。

(a)“插入对象”对话框(b)嵌入Word文档后的窗体

图10.7从文件创建

用鼠标右键单击窗体上OLE控件,从弹出的快捷菜单中选择“插入对象…”命令,打开对话框,可重新设置装入的对象。

如果选择“特殊粘贴…”命令,在打开的“选择性粘贴”对话框中,可以将剪切板上内容嵌入或链接到OLE控件。

OLE控件的常用属性有:

∙DisplayType:

用于指示对象是显示

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1