Einzelnen Beitrag anzeigen

Alloc

Registriert seit: 18. Apr 2005
Ort: Griesheim
167 Beiträge
 
Delphi 2006 Professional
 
#1

Herausfinden, ob bestimmte Datei noch geöffnet ist.

  Alt 31. Aug 2006, 02:47
Hallo,

ich habe hier in einem Projekt das Problem, das eine Datei aus einer Datenbank extrahiert wird und dann mit dem Verknüpften Programm geladen wird. Dabei kann der Dateityp so ziemlich alles sein, zZt aber eher noch txt, bmp, jpg und die diversen M$ Office Formate. Nun müsste ich herausfinden, wann die jeweilige Datei nicht mehr von dem Programm geöffnet ist, damit ich diese dann wieder in die Datenbank zurückschreiben kann.

Meine Ideen sind folgende:

1. (wäre IMHO die optimalste) Ich kann irgendwie rausbekommen, ob irgendein Programm die Datei geöffnet hat. Bei meinen Suchen hier im Forum bin ich aber eigentlich nur auf negative antworten gestoßen, also dass man dafür KernelMode-Treiber braucht um an die FileHandles zu kommen. Wenn da jmd was weis wäre es natürlich genial

2. Ich "starte" die Datei mit ShellExecute und warte bis das Programm geschlossen wurde. Nachteil: Wenn zum Beispiel eine Word-Datei geöffnet wurde und dann in Word noch eine ganz andre (für mich uninteressante Datei) geladen hat, nützt es nichts wenn er die Word-Datei meines Programmes schließt, da Word ja noch offen ist. Vorteil: Es läuft mit quasi allen Dateitypen.

3. Ich suche in der Registry das Programm raus, das mit dem jeweiligen FileType verknüpft ist und handle dementsprechend, zB bei Word über eine OLE-Verbindung und frage zyklisch ab, ob das File noch offen ist. Nachteil: Ich muss für jeden zu verwendenden Dateityp vorher wissen, wie das Programm zu handlen ist.

4. Ich gebe dem Nutzer eine MessageBox die er bestätigen soll, wenn er fertig ist

Weitere Vorschläge, Hinweise, Lösungsansätze (besonders zu Punkt 1 natürlich) wären mir sehr willkommen

Grüße.
Chris
Christian Illy
ONI2.net, basicly every important link about Oni.
  Mit Zitat antworten Zitat