Ordner überwachen
-
Hallo,
ich besuche dieses Forum schon längere Zeit und finde es sehr hilfreich. Heute muß ich mich auch mal mit einer Frage an Euch wenden.
Ich beabsichtige, einen Dienst zu schreiben, welcher einen bestimmten lokalen Ordner überwacht. Beim Speichern einer neuen Datei in diesen Ordner soll geprüft werden, ob die Datei eine bestimmte Endung hat. Wenn ja wird die Datei geöffnet und auf vorhandensein bestimmter Strings(Merkmale) überprüft. Sind diese vorhanden, dann soll ein Programm (auch von mir geschrieben) geöffnet werden, welches diese Datei einliest und verarbeitet.
Meine Fragen (zu dem Dienst) ist folgende:
-wie kann der Ordner ständig überprüft werden (das Prinzip so wie
im Windows-Explorer die Aktualisierung beim Speichern, Löschen und
verschieben?
-Kann ein Dienst ein externes Programm starten?Danke im Voraus für Eure Hilfe
Udo
-
Hallo,
Für Frage 1 schau dir doch mal FindFirstChangeNotification und die dazugehörigen Funktionen an. Fragen dazu passen wohl eher ins WinAPI-Forum.
Für Frage 2. Warum probierst du es nicht einfach aus?
-
Zu deiner ersten Frage kann ich dir folgende Komponente empfehlen:
http://marquardtnet.info/cecke/komponenten.2/2_watchdir.html
Basiert auf der von Braunstein genannten Funktion.
Nur, dass du dir nicht mehr die Arbeit machen muss die zu verpacken
-
Hallo
Danke für die Antworten.
@Braunstein: Du hast recht, die zweite Frage war blöd.
@rean: Danke für den Tip mit der Komponente. Werde sie ausprobieren.
Udo_11
-
Hallo, ich noch mal
Die Überwachung des Ordners mit einem Dienst klappt wunderbar.
Jetzt noch eine Frage zur Komponente von Christian:Wie kann ich die Informationen zur Änderung auslesen?
Ich habe z.B. FILE_NOTIFY_INFORMATION gefunden, krieg aber nicht in die Reihe, das anzuwenden.
Udo_11
-
Was hast du denn versucht?
-
Hallo,
FindFirstNotification und FindNextNotification geben nur Informationen das ein Änderung erfolgt ist, aber nicht welche.
Mit ReadDirectoryChangesW kann man Informationen über die Änderungen in einen Puffer schreiben und auswerten.
Aber wie wende ich die Funktion zu laufenden Überwachung an??? Muß ich trotzdem noch die beiden ersten Funktionen verwenden und wenn ja, in welcher Reihenfolge bzw. Abhängigkeit.Udo_11