AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Datei mit Standard-App öffnen und auf Beendigung warten

Datei mit Standard-App öffnen und auf Beendigung warten

Ein Thema von RaSoWa1 · begonnen am 4. Aug 2016 · letzter Beitrag vom 7. Aug 2016
Antwort Antwort
Seite 1 von 2  1 2   
RaSoWa1

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

Datei mit Standard-App öffnen und auf Beendigung warten

  Alt 4. Aug 2016, 14:19
Hallo,

ich möchte unter Windows 10 aus einem Delphi 2010-Programm heraus Dateien mit der zugewiesenen Standard-App öffnen und warten bis diese Standard-App (z.B. die Foto-App) wieder geschlossen wird.
Eine Datei mit einer bekannten Anwendung öffnen und warten mache ich mit "CreateProcess" und "WaitForInputIdle". Das funktioniert.

Um die Datei mit der zugewiesenen Standard-App zu öffnen verwenden ich "ShellExecute". Das öffnen klappt, nur wie kann ich auf die Beendigung warten?
Gibt es andere Methoden oder Verfahrensweisen?

Die Suche hat leider nichts für mich brauchbares ergeben, zumal ich mit Englisch so meine Probleme habe.

Gruß Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von FBrust
FBrust

Registriert seit: 4. Okt 2002
Ort: Saarbrücken
654 Beiträge
 
Delphi 10.4 Sydney
 
#2

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

  Alt 4. Aug 2016, 14:26
Hallo,

vielleicht hilft Dir "ShellExecuteAndWait" weiter, z. b. http://www.delphipraxis.net/32234-sh...-abfragen.html

Gruß
Frank
"Ich habe Dinge gesehen, die ihr Menschen niemals glauben würdet. Gigantische Schiffe, die brannten, draußen vor der Schulter des Orion" - Roy Batty
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#3

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

  Alt 4. Aug 2016, 14:31
Du solltest die externe Anwendung mit MSDN-Library durchsuchenCreateProcess starten und das resultierende Processhandle in einer Schleife mit MSDN-Library durchsuchenWaitForSingleObject abfragen. Und Englisch lernen
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Bambini
(Gast)

n/a Beiträge
 
#4

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

  Alt 4. Aug 2016, 14:32
Zitat:
Um die Datei mit der zugewiesenen Standard-App zu öffnen verwenden ich "ShellExecute". Das öffnen klappt, nur wie kann ich auf die Beendigung warten?
Gibt es andere Methoden oder Verfahrensweisen?
Die Raize Komponenten haben dafür eine Komponente TRzLauncher.

Aber ob das für alle Dateien klappt, wage ich zu bezweifeln, da mache Anwendungen die "Datei" an andere Instanzen weitergeben und sich dann beenden.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#5

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

  Alt 4. Aug 2016, 14:51
Eine andere Alternative.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 4. Aug 2016, 14:54
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.

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.




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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
RaSoWa1

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

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

  Alt 4. Aug 2016, 15:12
Hallo,

vielleicht hilft Dir "ShellExecuteAndWait" weiter, z. b. http://www.delphipraxis.net/32234-sh...-abfragen.html

Gruß
Frank
"ShellExecuteAndWait" kenne und nutze ich schon. Dies funktioniert leider nur mit "normalen" Anwendungen (z.B. eine .txt öffnet mit NotePad.exe und wartet auf Beendigung. Aber eine jpg-Datei wird mit der Foto-App zwar geöffnet aber das warten funktioniert nicht. Es wird leider kein .hProcess zurück gegeben.
Klaus
  Mit Zitat antworten Zitat
RaSoWa1

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

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

  Alt 4. Aug 2016, 15:32
Die Raize Komponenten haben dafür eine Komponente TRzLauncher.

Aber ob das für alle Dateien klappt, wage ich zu bezweifeln, da mache Anwendungen die "Datei" an andere Instanzen weitergeben und sich dann beenden.
Ich bin nur ein Hobby-Programmierer und verdiene damit kein Geld, deshalb scheiden kostenpflichtige Komponeneten aus.

Danke trotzdem für den Rat.
Gruß Klaus
Klaus
  Mit Zitat antworten Zitat
Bambini
(Gast)

n/a Beiträge
 
#9

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

  Alt 4. Aug 2016, 15:40
Ich bin nur ein Hobby-Programmierer und verdiene damit kein Geld, deshalb scheiden kostenpflichtige Komponeneten aus
Die Raize Komponenten gibt es zur zeit kostenlos zu Delphi 10.1 Berlin.
Laut Roadmap kommen die Zukünftig als Standard ins Delphi.
Ich habe noch nicht geschaut wie diese Komponente es macht, aber ich denke das läuft genauso über die hier beschriebenen API's
  Mit Zitat antworten Zitat
RaSoWa1

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

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

  Alt 4. Aug 2016, 15:43
Nee, geht leider auch nicht. Wenn ich nur den Dateinamen übergebe liefert "CreateProcess" false und es passiert leider auch nichts. Die Anwendung wird nicht einmal gestartet.

Dank.
Gruß Klaus
Klaus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:33 Uhr.
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