Modification de fichier

gdpasmini Messages postés 80 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 30 mars 2007 - 26 avril 2006 à 12:06
cs_fraboulet Messages postés 37 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 27 avril 2006 - 27 avril 2006 à 08:22
Hello !

J'aimerai savoir si quelqu'un sait comment utiliser les fonctions FindFirstChangeNotification et ReadDirectoryChangesW de l'API windows.

Je voudrais en effet savoir qd la taille d'un fichier est modifiée. Je ne sais pas ou placer ces fonctions pour qu'un signal soit émis et capté par ma fonction proc et ainsi réagir en conséquence...

Si quelqu'un peut m'aider, je lui serais grandement reconnaissant !

merci d'avance !

1 réponse

cs_fraboulet Messages postés 37 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 27 avril 2006
27 avril 2006 à 08:22
Il y a en effet deux techniques permettant la détection des modifications
sur un dossier/fichier sous Windows.



<li class= "MsoNormal" style="">La
première fonctionne avec des technologies 
Windows 9x et NT et utilise la fonction :

</li>



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.



<li>
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é.
</li>

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 :



<li>
Soit réagir directement dans le thread de polling,
</li>
<li>
soit lever un event pour que le process principal traite l'info.
</li>



Pour la mise en oeuvre, j'attire ton  attention sur les deux liens suivants :


<li>
http://www.codeguru.com/Cpp/W-P/files/article.php/c4467/
</li>
<li>
http://www.codeproject.com/file/directorychangewatcher.asp
</li>



Voilà!bonne continuation.
0
Rejoignez-nous