工作中遇到了一个需求:文件服务器的一个DWG文件夹如果要更改,就要及时通知相关的人。所以我利用FileSystemWatcher写了个小程序,监控指定目录,如果文件被创建,删除,修改,重命名,就会发送邮件到相关的人。
将其加入文件服务器的开机脚本,经测试通过。
开发环境Windows 7,Microsoft Visual Studio 2010,运行环境Windows server 2008.
新建一个窗体,一个label,一个timer。
以下为源码,
Imports System
Imports System.IO
Imports Microsoft.VisualBasic
Imports System.Security.Permissions
Imports System.Net.Mail
Imports System.Text
Public Class Form1
Public sb As New StringBuilder
Public mailStr As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim MyWatcher As New System.IO.FileSystemWatcher()
Label1.Text = "I am watching......"
'定义需要监控的目录
MyWatcher.Path = "c:\share"
'定义需要监控的文件类型
MyWatcher.Filter = "*.dwg"
MyWatcher.IncludeSubdirectories = False
MyWatcher.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
AddHandler MyWatcher.Changed, AddressOf OnChanged
AddHandler MyWatcher.Created, AddressOf OnCreated
AddHandler MyWatcher.Deleted, AddressOf OnDeleted
AddHandler MyWatcher.Renamed, AddressOf OnRenamed
MyWatcher.EnableRaisingEvents = True
End Sub
Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
sb.Append("Hi")
sb.Append(vbCrLf)
sb.Append("You are informed that the file " & e.Name & " " & " is changed.")
sb.Append(vbCrLf)
sb.Append("----------------------------------------------------------------------")
sb.Append(vbCrLf)
sb.Append("This email was sent from the FileWatching program, please do not reply.")
mailStr = sb.ToString
sb.Remove(0, Len(mailStr))
Call sendMail(mailStr)
End Sub
Private Sub OnCreated(ByVal source As Object, ByVal e As FileSystemEventArgs)
sb.Append("Hi")
sb.Append(vbCrLf)
sb.Append("You are informed that the file " & e.Name & " " & " is created.")
sb.Append(vbCrLf)
sb.Append("----------------------------------------------------------------------")
sb.Append(vbCrLf)
sb.Append("This email was sent from the FileWatching program, please do not reply.")
mailStr = sb.ToString
sb.Remove(0, Len(mailStr))
Call sendMail(mailStr)
End Sub
Private Sub OnDeleted(ByVal source As Object, ByVal e As FileSystemEventArgs)
sb.Append("Hi")
sb.Append(vbCrLf)
sb.Append("You are informed that the file " & e.Name & " " & " is deleted.")
sb.Append(vbCrLf)
sb.Append("----------------------------------------------------------------------")
sb.Append(vbCrLf)
sb.Append("This email was sent from the FileWatching program, please do not reply.")
mailStr = sb.ToString
sb.Remove(0, Len(mailStr))
Call sendMail(mailStr)
End Sub
Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)
sb.Append("Hi")
sb.Append(vbCrLf)
sb.Append("You are informed that the file " & e.OldName & " renamed to " & e.Name)
sb.Append(vbCrLf)
sb.Append("----------------------------------------------------------------------")
sb.Append(vbCrLf)
sb.Append("This email was sent from the FileWatching program, please do not reply.")
mailStr = sb.ToString
sb.Remove(0, Len(mailStr))
Call sendMail(mailStr)
End Sub
Private Sub sendMail(ByVal fileUpdates As String)
'邮件的发送者和接受者
Dim mailMsg As New MailMessage(FileWatcher@xxxx.com, "mailgroup@xxxx.com")
With mailMsg
'邮件主题
.Subject = "DWG File is Updated"
'邮件内容
.Body = fileUpdates
End With
'设置SMTP服务器,DNS名或者IP
Dim client As New SmtpClient("mailserverxxx")
client.Send(mailMsg)
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Hide()
End Sub
End Class
转载于:https://blog.51cto.com/xiaozhe/878233