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