J'ai besoin d'un analogue de fichier de fichiers de .NET dans RAW C ++ / WinapI. J'ai presque commencé à coder un moi-même à l'aide de FindFirstChangenotification / FindnextChangénotification, mais cela m'a eu lieu que je ne suis probablement pas le premier qui en a besoin et peut-être que quelqu'un sera prêt à partager. Idéalement ce que j'ai besoin est une classe qui peut être une classe qui peut Soyez utilisé comme suit: P>
FileWatcher fw; fw.startWatching("C:\MYDIR", "filename.dat", FileWatcher::SIZE | FileWatcher::LAST_WRITE, &myChangeHandler); ... fw.stopWatching();
4 Réponses :
Il existe un code public-domaine ici . Mon projet actuel utilise ceci (hérité des développeurs précédents). Cela fonctionne assez bien mais nous manquons de notifications pour des raisons qui ne sont pas claires (et éventuellement non causées par ce code). p>
Notez que l'API Win32 présente certaines limitations qui rendent difficile / impossible d'éviter les notifications manquantes. Contexte et allégué de travail pour l'API sont
Merci, semble être un très beau morceau de code! Très, très proche en effet. Malheureusement dépend de la MFC (CSSTLING, CSINGLELOCK, SECTION CRITIQUE) Ceci ne peut pas être utilisé tel quel et bonne réécriture.
Oui, et en fait, notre propre utilisation de ce code n'est pas dépendante du MFC. Cependant, la partie difficile ici est la gestion du signal de l'API Win32 et cela semble bien fonctionner.
Il faut encore trop de réécrire pour se débarrasser de la MFC. Je me trompe peut-être, mais je pense que j'apprendais avec précaution ReadDirectoryChangesw Moi-même serait à la fois plus rapide et plus facile.
Un étrange comportement de l'API de notification peut être vu pour des choses comme des événements d'imprimante également: Stackoverflow.com/a/16301060/2055163 Stackoverflow.com/Questtions/18595173/...
Qu'en est-il de la fonction READDIRECTORYCHANGESW? P>
http://msdn.microsoft.com/fr -Us / Bibliothèque / AA365465 (vs.85) .aspx P>
Il stocke des notifications dans un tampon afin de ne pas manquer de modifications (sauf si le tampon déborde) p>
Il semble imposer une stratégie de vote périodique, mais j'aimerais être informé des modifications (j'ai besoin de recharger un fichier lorsque cela est modifié).
Pardon, j'avais tort. Cela permet d'attendre sur un événement. Semble être une option viable.
http: //msdn.microsoft.com/en-us/library/system.idio.filesystemwatcher.CileSystemwatcher.Created%28V=VS.71%29.aspx Ce qui précède, Throglh c #, nous pouvons toujours écrire un wrapper COM p>
2021 Réponse: P>
Une version forcée du repo énuméré ci-dessous qui est activement maintenue: https://github.com/spartanj/ efsw p>
Ancienne réponse: P>
Il s'agit d'une solution multi-plateformes, mais le travail enveloppe-t-il bien les trucs Win32: https://github.com/jameswynn/simplefilewatcher P>
Une solution multiplate-forme semble plus agréable qu'une solution spécifique à Windows.
Cette lien aide?
Très bien! Mais ne prend pas en charge la surveillance d'un fichier spécifique et nécessite une fenêtre de recevoir des notifications. Mais peut toujours être utilisé comme un plan pour sa propre implémentation.
L'URL relisoft.com/win32/watcher.html est mort