AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Programm ausführen und warten bis es beendet wurde
Thema durchsuchen
Ansicht
Themen-Optionen

Programm ausführen und warten bis es beendet wurde

Ein Thema von melodie · begonnen am 7. Sep 2008 · letzter Beitrag vom 7. Sep 2008
Antwort Antwort
melodie

Registriert seit: 6. Mai 2007
32 Beiträge
 
Delphi 2005 Personal
 
#1

Programm ausführen und warten bis es beendet wurde

  Alt 7. Sep 2008, 10:56
Ich habe schon herausgefunden, wie ich soetwas anstelle, aber das will bei keinem Beispiel klappen.

Mein Code:
Delphi-Quellcode:
procedure ShellExecAndWait(dateiname: string; Parameter: string);
var executeInfo: TShellExecuteInfo;
dw: DWORD;
begin
FillChar(executeInfo, SizeOf(executeInfo), 0);
with executeInfo do
begin
        cbSize := SizeOf(executeInfo);
        fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
        Wnd := GetActiveWindow();
        executeInfo.lpVerb := 'open';
        executeInfo.lpParameters := PChar(Parameter);
        lpFile := PChar(dateiname);
        nShow := SW_SHOWMAXIMIZED;
end;
if ShellExecuteEx(@executeInfo) then
        dw := executeInfo.HProcess
else
begin
        ShowMessage('Fehler: ' + SysErrorMessage(GetLastError));
        Exit;
end;
while WaitForSingleObject(executeInfo.hProcess, 50) <> WAIT_OBJECT_0 do
        Application.ProcessMessages;
CloseHandle(dw);
end;

//Hier wird die Funktion aufgerufen und erst wenn das Programm beendet wurde sollen die Befehle danach ausgeführt werden
procedure TForm1.Image3Click(Sender: TObject);
begin
  FormStyle := fsNormal;
  ShellExecAndWait(config.Strings[0], '');
  FormStyle := fsStayOnTop;
  SetFocus;
end;
Ich hoffe es ist verständlich geschildert.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.631 Beiträge
 
Delphi 12 Athens
 
#2

Re: Programm ausführen und warten bis es beendet wurde

  Alt 7. Sep 2008, 11:00
Hast Du es alternativ mal mit Ollis Variante versucht?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
melodie

Registriert seit: 6. Mai 2007
32 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Programm ausführen und warten bis es beendet wurde

  Alt 7. Sep 2008, 11:29
Die Version klappt auch nicht.

Ich habe einfach die verlinkte Unit eingebunden und folgendes in meinem Code geändert:
Delphi-Quellcode:
procedure TForm1.Image3Click(Sender: TObject);
begin
  FormStyle := fsNormal;
  ShellExecuteAndWait(Application.Handle, 'open', PChar(config.Strings[0]), nil, PChar(ExtractFileDir(config.Strings[0])), 0, False);
  FormStyle := fsStayOnTop;
  SetFocus;
end;
Es passiert genau dasselbe wie bei meinen zahlreichen anderen Versuchen: Das Programm öffnet sich und, egal ob ich etwas in dem Programm mache oder nicht, nach ca. 5 sek. kommt wieder mein Programm in den Vordergrund.
  Mit Zitat antworten Zitat
RaSoWa1

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

Re: Programm ausführen und warten bis es beendet wurde

  Alt 7. Sep 2008, 12:21
Hallo,
mal in Tip in eine andere Richtung.

Ich hatte mal das gleiche Problem. Habe ewig Codes gesucht und getestet. Ohne Erfolg. Bis ich festgestellt habe, das es an dem aufgerufenem Programm lag.
Das Programm war das "Ulead PhotoImpact 12\Iedit.exe". Diese EXE hatte nur den Startbilschirm angezeigt und dann die "Iedit_.exe" (das eigentliche Programm) gestartet.
Nachdem ich die Iedit_.exe aufrufe, funktioniert es wie gewollt, aber ohne den Startbilschirm. Geht dadurch sogar etwas schneller.

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

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.631 Beiträge
 
Delphi 12 Athens
 
#5

Re: Programm ausführen und warten bis es beendet wurde

  Alt 7. Sep 2008, 12:47
Auf sowas würde ich auch nicht kommen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
melodie

Registriert seit: 6. Mai 2007
32 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Programm ausführen und warten bis es beendet wurde

  Alt 7. Sep 2008, 13:07
Komisch. Mit einem anderen Programm geht es auf einmal.
Wobei ich 5 sek. warten muss bis nach Beendigung des Programms, wieder mein Form auftaucht.

Ich habe vorher swriter.exe von OpenOffice aufgerufen. Weiß jemand was daran problematisch seien könnte?

[edit]
Genau das Problem, das von RaSoWa1 beschrieben wurde.
Aus swriter.exe wird soffice.exe.
Vielen Dank für den Tipp!
[/edit]

[edit2]
Doch nicht!
Mein Programm schiebt sich trotzdem nach 5sek in den Vordergrund. Obwohl ich soffice.exe aufgerufen habe.
[/edit2]
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz