Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Feststellen wann eine Datei erstellt wird (https://www.delphipraxis.net/76324-feststellen-wann-eine-datei-erstellt-wird.html)

Manzoni 2. Sep 2006 11:48


Feststellen wann eine Datei erstellt wird
 
Hallo!

Ich bin grade dabei ein Programm zu schreiben, welches überwachen soll obe eine gewisse Datei erstellt wurde. WEnn die Datei erstellt wurde, soll ein Programm gestartet werden. Ich bin am Überlegen zwischen zwei Varianten:

Die erste ist einfach einen Thread zu programmieren der in regelmäßigen Abständen mit fileexists() prüft ob die Datei vorhanden ist. Anschließend würde ich noch überprüfen ob die Datei noch geöffnet ist, z.B. mit einem weiteren Thread

Meine zweite Idee war das Windows-Event abzufangen, dass die Datei erstellt. Da ich mich aber wenig mit Hooks auskenne, weiß ich nicht wie man das realisieren kann bzw. ob das ein sinnvolles herangehen an das Problem ist.
Kann mir einer von euch weiterhlefen, ob die zweite Variante pragmatisch ist und wie das daszugehörige Windows-Event heißt? Dazu habe ich bisher noch nichts gefunden. Noch ein Hinweis: Ich möchte nicht den Ordner überwachen und die Änderungen feststellen. Da in dem gleichen Ordner mehrere tausend andere Dateien liegen, wäre das zu performanzlastig. Vielen Dnk im Voraus,

mfg Manzoni

Go2EITS 2. Sep 2006 12:09

Re: Feststellen wann eine Datei erstellt wird
 
Hallo, Manzoni!
in meinem OpenSource Prog (siehe Link) kannst Du in der Liste die Datei einfügen, die Du dessen Erstellung Du beobachten willst.

Sehen, ob ein bestimmtes File erstellt wurde
Sourcen sind dabei, Du darfst es frei/kommerziell verwenden. Vielleicht löst es das Problem.

Eine neue Version (Freeware) ist in Arbeit, die statt dem Polling ein Ereignis abfragt.

Beste Grüße.
Go2EITS

Christian Seehase 2. Sep 2006 12:13

Re: Feststellen wann eine Datei erstellt wird
 
Moin Manzoni,

für den Zweck stellt Dir Windows schon Funktionen bereit.
Schau Dir mal Hier im Forum suchenReadDirectoryChangesW / MSDN-Library durchsuchenReadDirectoryChangesW (nur NT/2000/XP) und Hier im Forum suchenFindFirstChangeNotification / MSDN-Library durchsuchenFindFirstChangeNotification (und zugehörige) an.

Manzoni 2. Sep 2006 18:38

Re: Feststellen wann eine Datei erstellt wird
 
Vielen Danke erstmal für eure Antowrten!

himitsu 2. Sep 2006 19:36

Re: Feststellen wann eine Datei erstellt wird
 
Na ob du für diese Antworten wirklich dankbar bist ... warte erstmal damit ab (es läuft ja leider irgendwie nicht so ganz damit)

Die beiden DP-internen SuchLinks werden dich schon zu einigen Themen führen (auch zu denen, wo die Probleme beschrieben werden -.-'' )

Christian Seehase 2. Sep 2006 20:18

Re: Feststellen wann eine Datei erstellt wird
 
Moin Himitsu,

Zitat:

Zitat von himitsu
es läuft ja leider irgendwie nicht so ganz damit

:gruebel:

Was meinst Du?

himitsu 2. Sep 2006 20:23

Re: Feststellen wann eine Datei erstellt wird
 
ReadDirectoryChangesW & PRAXiSFindFirstChangeNotification ... schonmal aufgefallen? es läuft nicht bei allen so, wie es sollte.

ich kämpfe derzeit och damit ... mal geht es, mal geht es nicht, wenn es läuft, dann behindert es z.B. D7 und daß kann z.B. Dateien nicht mehr Speicher/umbenennen -.-''

Mackhack 3. Sep 2006 02:42

Re: Feststellen wann eine Datei erstellt wird
 
Was ist denn der genaue Unterschied zwischen FindFirstChangeNotification und ReadDirectoryChangesW?

Laut MSDN ueberwacht man mit beiden Functions entweder einen Path oder sogar die ganzen SubDirs.

_frank_ 3. Sep 2006 05:04

Re: Feststellen wann eine Datei erstellt wird
 
evtl. ist TDirectoryWatch von http://angusj.com/delphi/ eine hilfe...

Gruß Frank

Christian Seehase 3. Sep 2006 12:10

Re: Feststellen wann eine Datei erstellt wird
 
Moin Mackhack,

ReadDirectoryChangesW liefert Dir aber auch noch zurück welche Datei/Verzeichnis geändert, und welche Veränderung durchgeführt wurde.
FindFirstChangeNotification zeigt nur an, dass sich was geändert hat. Wo die Änderung aufgetreten ist, musst Du dann selber herausfinden.
Diese Funktion läuft allerdings auch auf Windows 9x/Me, wohingegen ReadDirectoryChangesW nur auf NT-basierten Systemen existiert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz