2012-12-06 6 views

Répondre

6

Sous Windows, regardez SHChangeNotifyRegister(). Non seulement cela vous dit quel genre de changement s'est produit, mais il vous indique également quel (s) fichier (s) exact (s) ont été modifié (s).

+0

ce travail dans la fenêtre Vista ou sept? et comment je peux avec cette fonction obtenir l'événement quand n'importe quel fichier dans le système de fichiers ou dans un répertoire spécifique est changé? – lebron2323

+1

Le dernier paramètre spécifie le (s) dossier (s) que vous souhaitez surveiller. Pour surveiller l'ensemble du système de fichiers, créez une entrée pour chaque lettre de lecteur local (ignorer les lettres de lecteur mappées) ou une seule entrée dont le chemin est défini sur NULL (mais vous recevrez des notifications de tous les objets shell, pas seulement du système de fichiers local) . –

5

Vous cherchez probablement pour Win32 Directory Change Notifications. Il existe également une API .NET appelée FileSystemWatcher qui expose la même fonctionnalité.

La page liée est un bon exemple d'abonnement aux notifications du système de fichiers. Pour plus d'accès de bas niveau aux changements du système de fichiers, vous devrez regarder dans Change Journals. Cette API est beaucoup plus compliquée, donc le premier, les notifications de changement d'annuaire, est probablement le meilleur endroit pour commencer.

Par souci de le mentionner, le noyau Linux est un sous-système appelé pour cette inotifiy.

+0

Les notifications de modification de l'annuaire ne notifient que lorsqu'un fichier du répertoire enchevêtré est créé ou supprimé. C'est cool, merci! Mais j'ai besoin de quelque chose comme ça, mais pour changer le contenu du fichier. – lebron2323

+2

Il vous permet également de voir les modifications de fichiers dans cet arbre en utilisant le ['FILE_NOTIFY_CHANGE_LAST_WRITE'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa365465%28v=vs.85%29. aspx). Cependant, vous devrez tenir compte de l'avertissement concernant la mise en cache du système de fichiers. –

Questions connexes