VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 在VB中模拟实现邮件传输
发表评论(0)作者:, 平台:, 阅读:8862, 日期:2000-03-29


在VB中模拟实现邮件传输


VB作为一种面向对象的Windows应用程序的开发软件,以其功能强大和简单

易用的编程手段受到广大编程人员的喜爱。VB中提供了许多用于Windows程序设

计的控件和大量的函数,本文就将告诉您怎样利用VB中的函数来实现邮件传输

的功能。

首先我们在服务器上按照不同的帐号建立了不同的工作目录,采用NFS协议

将多台PC终端连接到服务器。这样,邮件发送的问题就变成了文件从一个目录

移到另一个目录的问题,在VB中可通过简单的Filecopy与Kill语句来完成。下

面遇到的问题是如何接收到一个新邮件,并在应用中及时提醒用户邮件的到来。

这就需要编写一个时刻运行的检测程序,在应用中直接加入这一过程后则原来

应用中的操作得不到及时响应。这里我们采用了Dir,Do?Events,Shell三个

函数解决了这个问题。

Dir:用于判断目录下是否有文件,及某个文件是否存在。

DoEvents:使CPU返回Windows控制,响应挂起事件。

Shell:在应用中执行其它应用程序。

Windows是一个多任务的操作系统,它在执行任务同时可检测事件并响应它。

利用这一特性,我们采用DoEvents和Shell可实现多个程序的同时运行。当应用

程序启动后,我们用Shell同时启动P2程序。P2程序每隔10秒检测一次缓冲目录,

若有文件到达则提示警告信息。一切操作过程中,用户感觉不到应用的中断。这

里用DoEvents函数实现了应用程序的响应,用Dir函数检测缓冲目录,当应用程

序退出时,同时生成一个标志文件FLAG.TXT。P2程序检测到后,结束运行并删

除标志文件。警告信息可以使用声音,图像等多种方式,可根据各自的需求自行

设计,编译后嵌入P2程序中,这里就不一一详述了。

程序代码如下:

应用程序P2:

Private Sub Form—Load()

‘程序说明部分:

Dim yy

Dim a,b,c As String

Dim ab As Integer

a=Time

a=Mid(a,7,1)’取当前时间秒数

Do

b=Time b=Mid(b,7,1)

If((Int(a)+1)Mod6)=Int(b)Them

’事件经过十秒

filename=Dir("C:\inbox\”,vbNormal)

’检测收件箱中有无邮件到达

If filename=""Then

Else Beep'若有邮件到达则震铃一次

End If a=b

End If checkfile=Dir("C:\tmp\flag.txt")

’检测应用程序是否结束

If checkfile="flag.TXT"Then

Kill"c:\tmp\flag.txt"

’若结束则删除标志文件并退出运行

GoTo exit1 End If

yy=DoEvents’响应其他挂起事件

Loop exit1:End End Sub

应用程序P1:

’调用程序P2.exe

Private Sub Form—Load()

’应用程序中其他初始化部分

b="c:\p2.exe“

retval=Shell(b,0)’将程序运行在后台

End Sub

’P1退出是关闭程序P2

Private Sub Command1—Click()

Open yhpath &"yhlog.log"ForAppendAs#2’应用程序退出写入日志文件

Print#2,Now,yhnamel;"用户退出"

Close#2

Open"c:\tmp\flag.txt"For Output As #1

’生成退出标志文件

Colse#1 End End Sub

本程序在简体中文Win95,Visual Basic 4.0上编译通过。利用上面介绍

的方法,我们可以编写更多并行并发的应用程序,提高我们计算机的利用效率。