Ich nutze Delphi 5 und
ReadDirectoryChangesW (
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx) mit dem FILE_NOTIFY_CHANGE_LAST_WRITE Parameter um Änderungen in einem Verzeichnis zu überwachen.
Wenn es eine Änderung gibt bekomme ich eine FILE_NOTIFY_INFORMATION Struktur.
So weit so gut.
Das Problem: Das Event wird mehr als einmal verschickt!
Ich überwache c:\temp
Beispiel 1:
Kopieren von testfile.txt (100 mb) mit Windows Explorer nach c:\temp
Ich bekomme FILE_NOTIFY_INFORMATION 3 (!!) mal nacheinander. 2 mal wenn das Schreiben beginnt und ein drittes mal 5 Sekunden später wenn es endet.
Beispiel 2:
Kopieren von testfile.txt (100 mb) mit Total Commander (Dateimanager) nach c:\temp
Ich bekomme FILE_NOTIFY_INFORMATION 2 (!!) mal nacheinander. 1 mal wenn das Schreiben beginnt und ein zweites mal 5 Sekunden später wenn es endet.
---
Wie soll ich nun wissen wann das kopieren beendet wurde? Die Information dass es gestartet wurde, brauche ich nicht.
Ich kann die Anzahl der Meldungen nicht zählen, da ich z.B. bei Dropbox ein Event bekomme, bei Total Commander zwei und beim Explorer oder Ultraedit drei.
Diese Lösung klappt nicht:
Mit GetFileSecurityW schaue ich nach ob ich mit GENERIC_WRITE das File beschreiben kann. Leider meldet mir Windows, auch WÄHREND des Kopierens dass ich schreiben darf.
Danke für die Hilfe im Voraus!