在VB中模拟实现邮件传输
今天图老师小编给大家展示的是在VB中模拟实现邮件传输,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!
首先我们在服务器上按照不同的帐号建立了不同的工作目录,采用NFS协议将多台PC终端连接到服务器。这样,邮件发送的问题就变成了文件从一个目录移到另一个目录的问题,在VB中可通过简单的Filecopy与Kill语句来完成。下面遇到的问题是如何接收到一个新邮件,并在应用中及时提醒用户邮件的到来。这就需要编写一个时刻运行的检测程序,在应用中直接加入这一过程后则原来应用中的操作得不到及时响应。这里我们采用了Dir,DoEvents,Shell三个函数解决了这个问题。
Dir:用于判断目录下是否有文件,及某个文件是否存在。
DoEvents:使CPU返回Windows控制,响应挂起事件。
Shell:在应用中执行其它应用程序。
Windows是一个多任务的操作系统,它在执行任务同时可检测事件并响应它。
利用这一特性,我们采用DoEvents和Shell可实现多个程序的同时运行。当应用程序启动后,我们用Shell同时启动P2程序。P2程序每隔10秒检测一次缓冲目录,若有文件到达则提示警告信息。一切操作过程中,用户感觉不到应用的中断。这里用DoEvents函数实现了应用程序的响应,用Dir函数检测缓冲目录,当应用程序退出时,同时生成一个标志文件FLAG.TXT。P2程序检测到后,结束运行并删除标志文件。警告信息可以使用声音,图像等多种方式,可根据各自的需求自行设计,编译后嵌入P2程序中,这里就不一一详述了。
程序代码如下:
应用程序P2:
PrivateSubForm—Load()
‘程序说明部分:
Dimyy
Dima,b,cAsString
DimabAsInteger
a=Time
a=Mid(a,7,1)'取当前时间秒数
Do
b=Timeb=Mid(b,7,1)
If((Int(a)+1)Mod6)=Int(b)Them
'事件经过十秒
filename=Dir("C:inbox”,vbNormal)
'检测收件箱中有无邮件到达
Iffilename=""Then
ElseBeep'若有邮件到达则震铃一次
EndIfa=b
EndIfcheckfile=Dir("C:mpflag.txt")
'检测应用程序是否结束
Ifcheckfile="flag.TXT"Then
Kill"c:mpflag.txt"
'若结束则删除标志文件并退出运行
GoToexit1EndIf
yy=DoEvents'响应其他挂起事件
Loopexit1:EndEndSub
应用程序P1:
'调用程序P2.exe
PrivateSubForm—Load()
'应用程序中其他初始化部分
b="c:p2.exe“
retval=Shell(b,0)'将程序运行在后台
EndSub
'P1退出是关闭程序P2
PrivateSubCommand1—Click()
Openyhpath&"yhlog.log"ForAppendAs#2'应用程序退出写入日志文件
Print#2,Now,yhnamel;"用户退出"
Close#2
Open"c:mpflag.txt"ForOutputAs#1
'生成退出标志文件
Colse#1EndEndSub
本程序在简体中文Win95,VisualBasic4.0上编译通过。利用上面介绍的方法,我们可以编写更多并行并发的应用程序,提高我们计算机的利用效率。->