Il y a en effet deux techniques permettant la détection des modifications
sur un dossier/fichier sous Windows.
- La
première fonctionne avec des technologies
Windows 9x et NT et utilise la fonction :
FindFirstChangeNotification(.)
(ainsi que d'autres fonctions très liées).
Le problème est que cette
fonction prévient uniquement du changement, mais pas de ce qui a changé dans un
répertoire donné, la seule solution est donc de rafraîchir le répertoire
intégralement pour trouver le changement sans quoi, nous n'avonspas d'autres
précision sur la modification.
-
La seconde, ReadDirectoryChangesW(.),
s'utilise uniquement avec les OS de type NT, mais est beaucoup plus simple
d'utilisation puisqu'elle permet d'obtenir tous les renseignements souhaités
sur le dossier/fichier modifié.
La
fonction ReadDirectoryChangesW(.) permet de préciser un filtre
dans son prototype intervenant sur le type de changement auxquels la fonction
est 'sensible' => pout toi
FILE_NOTIFY_CHANGE_SIZE.
Le principe est de créer un thread de polling de ton fichier ou répertoire (il scrute en permanence d'éventuelles modifications (while...
ReadDirectoryChangesW
), et lorsqu'une modification a lieu tu pourras alors :
-
Soit réagir directement dans le thread de polling,
-
soit lever un event pour que le process principal traite l'info.
Pour la mise en oeuvre, j'attire ton attention sur les deux liens suivants :
-
http://www.codeguru.com/Cpp/W-P/files/article.php/c4467/
-
http://www.codeproject.com/file/directorychangewatcher.asp
Voilà!bonne continuation.