本帖最后由 cfxqm 于 2010-11-11 10:34 编辑
我想编个程序监控某个文档,当此文档被修改后向邮箱发送邮件。程序如下:#include <SmtpMailer.au3>
Const $FileName="E:\TBReport\Report.txt"
Local $FileTime,$yyyymd
$FileTime = _GetFileTime()
While (@HOUR>=8 And @HOUR <=23)
$yyyymd = _GetFileTime()
If($FileTime <> $yyyymd) Then ;检查文件是否被修改过(修改过时间会变化)
$FileTime = $yyyymd
_SendMail() ;如果修改过则以此文件作为附件发送邮件
EndIf
Sleep(10000) ;10秒钟检查一次文件
WEnd
Func _GetFileTime()
Local $file,$t
If FileExists($FileName) Then ;检查报告文件是否存在
$t = FileGetTime($FileName,0,1) ;获取文件建立的时间
If Not @error Then
Return $t
EndIf
Else ;建立一个新文件
$file = FileOpen($FileName, 1)
If $file = -1 Then
MsgBox(0, "错误", "无法打开目标文件。",5)
Exit
EndIf
FileClose($file)
EndIf
EndFunc
Func _SendMail()
省略
代码在运行时,发送邮件正常,但是在我试着手动打开该文档,修改后保存时,有时候能保存,有时候不能保存,提示“不能创建文件,请确认路径和文件名是否正确”。似乎文件被写保护了,可能是被我所运行的程序打开后没关闭。但是查帮助文件看不出FileExists会锁定啊。是什么原因呢? |