Imports System.IO
Public Class Form1
Dim WithEvents FSW As New System.IO.FileSystemWatcher("C:\", "*.jpg")
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
FSW.EnableRaisingEvents = True
End Sub
Private Sub FSW_Changed(ByVal sender As Object, ByVal e As System.IO.FileSystemEventArgs) Handles FSW.Changed
MsgBox(e.FullPath & " - Changed")
End Sub
End Class
Imports System.IO
Module Watch
Public WithEvents fsw As New FileSystemWatcher("E:\", "*.jpg")
Sub Main()
' Create a FileSystemWatcher to monitor all files on drive C.
'Dim fsw As New FileSystemWatcher("E:\")
' Watch for changes in LastAccess and LastWrite times, and
' the renaming of files or directories.
fsw.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite _
Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
' Register a handler that gets called when a
' file is created, changed, or deleted.
AddHandler fsw.Changed, New FileSystemEventHandler(AddressOf OnChanged)
' The commented line of code below is a shorthand of the above line.
' AddHandler fsw.Changed, AddressOf OnChanged
' NOTE: The shorthand version is used in the remainder of this code.
' FileSystemEventHandler
AddHandler fsw.Created, AddressOf OnChanged
' FileSystemEventHandler
AddHandler fsw.Deleted, AddressOf OnChanged
' Register a handler that gets called when a file is renamed.
' RenamedEventHandler
AddHandler fsw.Renamed, AddressOf OnRenamed
' Register a handler that gets called if the
' FileSystemWatcher needs to report an error.
' ErrorEventHandler
AddHandler fsw.Error, AddressOf OnError
fsw.IncludeSubdirectories = True
' Begin watching.
fsw.EnableRaisingEvents = True
'fsw.IncludeSubdirectories = True
' Wait for the user to quit the program.
Console.WriteLine("Press 'Enter' to quit the sample.")
Console.ReadLine()
End Sub
' This method is called when a file is created, changed, or deleted.
Private Sub OnChanged(ByVal source As Object, ByVal e As FileSystemEventArgs)
' Show that a file has been created, changed, or deleted.
Dim wct As WatcherChangeTypes = e.ChangeType
Console.WriteLine("File {0} {1}", e.FullPath, wct.ToString())
End Sub
' This method is called when a file is renamed.
Private Sub OnRenamed(ByVal source As Object, ByVal e As RenamedEventArgs)
' Show that a file has been renamed.
Dim wct As WatcherChangeTypes = e.ChangeType
Console.WriteLine("File {0} {2} to {1}", e.OldFullPath, e.FullPath, wct.ToString())
End Sub
' This method is called when the FileSystemWatcher detects an error.
Private Sub OnError(ByVal source As Object, ByVal e As ErrorEventArgs)
' Show that an error has been detected.
Console.WriteLine("The FileSystemWatcher has detected an error")
' Give more information if the error is due to an internal buffer overflow.
If TypeOf e.GetException Is InternalBufferOverflowException Then
' This can happen if Windows is reporting many file system events quickly
' and internal buffer of the FileSystemWatcher is not large enough to handle this
' rate of events. The InternalBufferOverflowException error informs the application
' that some of the file system events are being lost.
Console.WriteLine( _
"The file system watcher experienced an internal buffer overflow: " _
+ e.GetException.Message)
End If
End Sub
End Module
Вот ещё один вариант (на сей раз WinApplication; генерируемый автоматически код дизайнером приводить не стал):
Partial Class Form1
Private Sub FSMonitor_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) Handles FSMonitor.Changed
ListBox1.Items.Add(e.Name)
End Sub
Private Sub cmdBrowse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdBrowse.Click
If FolderBrowser.ShowDialog() = Windows.Forms.DialogResult.OK Then
txtDirectory.Text = FolderBrowser.SelectedPath
End If
End Sub
Private Sub cmdStart_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdStart.Click
FSMonitor.Path = txtDirectory.Text
FSMonitor.EnableRaisingEvents = True
FSMonitor.WaitForChanged(IO.WatcherChangeTypes.All)
'FSMonitor.Filter = " "
'FSMonitor.NotifyFilter = (NotifyFilters.LastAccess Or NotifyFilters.LastWrite Or NotifyFilters.FileName Or NotifyFilters.DirectoryName)
End Sub
Private Sub EventLog_EntryWritten(ByVal sender As System.Object, ByVal e As System.Diagnostics.EntryWrittenEventArgs)
ListBox1.Items.Add(e.Entry)
End Sub
Private Sub cmdEventLog_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'EventLog.EnableRaisingEvents = True
End Sub
End Class
FSMonitor.WaitForChanged(IO.WatcherChangeTypes.All)
Спасибо тебе, добрый человек. Ну это-то я знал и так разумеется www.codeproject.com , а вот с этим Google
asharky писал(а):Спасибо тебе, добрый человек. Ну это-то я знал и так разумеется www.codeproject.com , а вот с этим Google
Яndex явилось для меня полным откровением. И не подозревал даже, что в сети бывают такие полезные сервера.
ЗЫ. А вообще может быть есть смысл поставить вместо всего этого форума безусловную переадресацию на разноцветные ссылки? Ну чтобы своё время людям не тратить понапрасну
Объясняю, раз не понятно.Ramzes писал(а):я не понял. Ты спросил где программисты ищут свободные контролы, я тебе сказал, что не так? я даже посоветовал тебе сайт, где много всего интересного и возможно есть интересующая тебя фича
asharky писал(а):Объясняю, раз не понятно.Ramzes писал(а):я не понял. Ты спросил где программисты ищут свободные контролы, я тебе сказал, что не так? я даже посоветовал тебе сайт, где много всего интересного и возможно есть интересующая тебя фича
Бывают вопросы общего характера, а бывают предметные. И на вторые, как минимум, странно давать ответ в стиле Яндекс.Ру. Иначе получатся полная фигня: всякий, кто знает про поисковые машины в сети, может давать ответы на любые вопросы. Но для чего тогда специализированные форумы существуют?
asharky писал(а):Вопрос: где вообще принято у VB.NET программистов искать свободно распространяемые контролы? Киньтесь ссылкой или ключевыми словами.
Ещё раз переформулирую вопрос.
Мне нужен контрол для .NET который наследуется от FilesystemWatches, но может следить за изменением файлов не только в локальной системе, но и на сетевых дисках. Подозреваю, что писать его самому не резон - все написано до нас.
Вопрос: где вообще принято у VB.NET программистов искать свободно распространяемые контролы? Киньтесь ссылкой или ключевыми словами.
asharky писал(а):Вопрос: где вообще принято у VB.NET программистов искать свободно распространяемые контролы? Киньтесь ссылкой или ключевыми словами.
Киньтесь ссылкой или ключевыми словами.
Киньтесь
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 110