Einzelnen Beitrag anzeigen

RaSoWa1

Registriert seit: 1. Jun 2006
Ort: Halle/Saale
140 Beiträge
 
Delphi 2010 Professional
 
#13

AW: Datei mit Standard-App öffnen und auf Beendigung warten

  Alt 4. Aug 2016, 19:15
Erstmal schauen was die Standard-Anwendung ist. (HKEY_CLASSES_ROOT)
z.B. in der Registry die Dateiendung suchen und prüfen ob es etwas zum OPEN gibt

Wenn du "Glück" hast, dann ist da eine EXE verlinkt und wie man diese ausruft (meistens "xxxxx.exe %1")

Das kannst du dann mit ShellExecute ausführen.
Dies funktioniert nur bei einer normalen EXE. Da liefert mir ShellExecute auch das entsprechende .hProcess für WaitForSingleObject.
Bei einer WindowsApp (z.B.: Foto-App) funktioniert dies leider nicht. Auch in der Registry finde ich nichts, wie ich die App erkennen und starten kann.

Zitat:
Ist ein DDE-Server verlinkt, dann startest du Diesen (MSDN-Library durchsuchenFindExecutable)
und zu dem sollte dann auch geschrieben stehen mit welcher Aktion darin dann das Document übergeben wird.
FindExecutable findet leider auch nur EXE-Dateien, keine Apps.

Zitat:
PROBLEMe wird es immer geben, wenn die gewünschte Anwendung nicht direkt gestartet wird, sondern "nur" ein Launcher, denn diese starten dann die eigentlich Anwendung, übergeben die Daten und beenden sich vorzeitig.
z.B. siehe MS Office, OpenOffice oder Delphi (das nutzt aktuell einen DDE-Server in der bdsLauncher.exe der die bds.exe startet)
Da hast du natürlich Recht.
Mir ist deshalb folgende Idee gekommen, für die ich gerade ein Testprogramm schreibe:
Ich schreibe unmittelbar vor und nach dem Aufruf mit ShellExecute alle ProzessID in jeweils eine Liste. Die Differenz beider Listen müsste mit hoher wahrscheinlichkeit die ProzessID der gestarteten Anwendung sein. Ich kann dann darauf reagieren. Ich kann dies aber erst am Wochenende weiter testen und prüfen ob und wie mir Windows dazwischen funkt.
Ich melde mich dann wieder.

Danke,
Gruß Klaus.
Klaus
  Mit Zitat antworten Zitat