VB.NET FileSystemWatcher : docs Word non signalés
Bonjour,
J'utilise le composant FileSystemWatcher pour détecter les modifications sur des fichiers afin de les sauvegarder en temps réel.
Mais les documents Word ne déclenchent pas l'événement Changed lorsqu'ils sont modifiés. A la place, le programme détecte la création, la modification et la suppression des fichiers temporaires "~$***.docx" (remplacer les astérisques par le nom du fichier Word sans les deux premiers caractères) et "~WRD####.tmp" (les dièses sont des chiffres variables).
Lorsque le document Word est modifié, la date de modification est pourtant bien mise à jour dans les attributs du fichier.
En revanche, la création d'un document Word déclenche bien l'événement Created.
Voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Dim filewatcher As New FileSystemWatcher(sourdir) With {
.Filter = "*.*",
.NotifyFilter = NotifyFilters.LastAccess Or
NotifyFilters.LastWrite Or
NotifyFilters.FileName Or
NotifyFilters.DirectoryName Or
NotifyFilters.Size,
.IncludeSubdirectories = True
}
AddHandler filewatcher.Created, AddressOf FileChanged
AddHandler filewatcher.Changed, AddressOf FileChanged
AddHandler filewatcher.Deleted, AddressOf FileDeleted
AddHandler filewatcher.Renamed, AddressOf FileRenamed
filewatcher.EnableRaisingEvents = True
Private Sub FileChanged(ByVal sender As Object, ByVal e As FileSystemEventArgs)
'sauvegarde du fichier
End Sub |
Je pourrais essayer de déduire le fichier réellement modifié par l'utilisateur d'après le fichier temporaire "~$***.docx", mais cela pourrait poser des problèmes si les noms de plusieurs documents ne différent que par leurs deux premiers caractères, et ce serait plus simple si le FileSystemWatcher faisait correctement son travail.
Connaîtriez-vous la cause de ce problème et un moyen de le résoudre ?
Cordialement,
E__Man.