Mal abgesehen davon, dass das offensichtlich nicht trivial ist, halte ich die Vorgehensweise nicht für gut.
Bei mir sind Grafik-Dateien mit Photoshop verknüpft. Wenn man jetzt für die Bilder eine Slide-Show macht und dafür jedesmal Photoshop öffnet und dann wieder schließt, ist das nicht optimal. Dazu kommt, dass du nicht beurteilen kannst, wie lange der Start der verknüpften Anwendung dauert. Für die Slide-Show kann dann die Zeitscheibe zu klein sein.
Leider weiß ich nicht, wofür die Anwendung genutzt werden soll, aber ich würde komplett anders vorgehen. Für das Programm muss hinterlegt werden, welche Programme die entsprechenden Dateien öffnen sollen. Viele Programme kannst du als OLE-Objekte in dein eigenes Programm integrieren. Dadurch behältst du die Kontrolle.
Text-Dokumente kann heute jeder auch als PDF bereitstellen. Dafür gibt es Freeware-Komponenten. Für Grafiken bietet Delphi von Haus aus schon Möglichkeiten. Du bist im Prinzip nicht auf externe Programme angewiesen.
Ich habe schon vor ähnlichen Problemen gestanden und habe zum Beispiel Word-Dateien embedded dargestellt. Bei PDF-Dateien hängt es vom Einsatzgebiet ab. Da nutze ich beide Möglichkeiten. Für Grafiken hatte ich bisher keinen Bedarf. Aber ich habe ein sehr kontrollierbares Umfeld. Wäre das nicht der Fall, gäbe ich den Anwendern klare Vorgaben oder würde die Kontrolle komplett ins eigene Programm aufnehmen.
EDIT:
Da fällt mir gerade noch ein, dass es sogar falsch sein kann, die verknüpfte Anwendung zu schließen. Was passiert, wenn die Anwendung schon geöffnet war und dort Dokumente ich Bearbeitung sind? Dann musst du zusätzlich sicherstellen, dass für die Anwendung eine neue Instanz erzeugt wird. Das geht, aber dafür muss die Anwendung kennen, wenn ich mich richtig erinnere. Du stehst also wieder vor dem Problem, dass du dich nicht auf eine Verknüpfung verlassen kannst. BTW: Was machst du, wenn es keine verknüpfte Anwendung gibt?