VB作为一种面向对象的Windows应用程序的开发软件,以其功能强大和简单易用的编程手段受到广大编程人员的喜爱。VB中提供了许多用于Windows程序设计的控件和大量的函数,本文就将告诉您怎样利用VB中的函数来实现邮件传输的功能。 首先我们在服务器上按照不同的帐号建立了不同的工作目录,采用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: 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上编译通过。利用上面介绍的方法,我们可以编写更多并行并发的应用程序,提高我们计算机的利用效率。  
|