AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi warten bis ShellExecute beendet ist

warten bis ShellExecute beendet ist

Ein Thema von eddy · begonnen am 14. Aug 2004 · letzter Beitrag vom 14. Aug 2004
Antwort Antwort
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#1

warten bis ShellExecute beendet ist

  Alt 14. Aug 2004, 16:10
Hallo Leute,

ich hab' mal wieder ein Problem.

In meinem Programm wird während der Laufzeit
Code:
ShellExecute(Handle, nil, PChar('c:\programme\winrar\winrar.exe'), PChar(parameter), nil, SW_SHOW);
ausgeführt, wenn eine im Archiv vorhandene Datei zur Bearbeitung nicht gefunden wird.
Danach wird auf eine Datei, die im Archiv enthalten sein sollte zugegriffen.

Funktioniert im Einzelschrittmodus alles bestens.

Beim Starten des entsprechenden Programmpunktes (ohne Einzelschrittmodus) erhalte ich an der Stelle
Code:
    AssignFile(f, path+file);
    Reset(f);
    if IOResult <> 0 then begin
      // melde Fehler
ein IOResult von 2, weil die entsprechende Datei ja noch gar nicht entpackt ist. ShellExecute läuft zu diesem Zeitpunkt noch.

Wie kann ich feststellen, ob das mit ShellExecute ausgeführte Programm beendet wurde, um solange
zu pausieren, bis der gestartete Vorgang beendet ist?

mfg
eddy
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#2

Re: warten bis ShellExecute beendet ist

  Alt 14. Aug 2004, 16:24
Hallo Leute,

habe die Antwort doch noch gefunden: DP-Link

bzw. dann hier.


Muß niemand weiter suchen und sich mühen!


mfg
eddy
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: warten bis ShellExecute beendet ist

  Alt 14. Aug 2004, 16:25
Hallo eddy,
das Warten bis ein Prozess beendet wurde funkt nur mit Hier im Forum suchenCreateProcess oder mit ShellExecuteEx:

Anbei ein Beispliel mit ShellExecuteEx:
Delphi-Quellcode:
{******************************************************************************}
FUNCTION StartAndWait(CONST ExecuteFile, ParamString: STRING): boolean;
//http://delphi.about.com/library/weekly/aa040803a.htm
{******************************************************************************}
VAR
  SEInfo : TShellExecuteInfo;
  ExitCode : DWORD;
BEGIN
  Result := False;
  IF NOT FileExists(ExecuteFile) THEN Exit;
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  SEInfo.cbSize := SizeOf(TShellExecuteInfo);
  WITH SEInfo DO
    BEGIN
      fMask := SEE_MASK_NOCLOSEPROCESS;
      Wnd := Application.Handle;
      lpFile := PChar(ExecuteFile);
      lpParameters := PChar(ParamString);
      nShow := SW_SHOWNORMAL;
    END;
  IF ShellExecuteEx(@SEInfo) THEN
    BEGIN
      REPEAT
        Application.ProcessMessages;
        // Damit die Prozessorauslastung sinkt :-)
        Sleep(100);
        GetExitCodeProcess(SEInfo.hProcess, ExitCode);
      UNTIL (ExitCode <> STILL_ACTIVE) OR Application.Terminated;
      Result := True;
    END;
END;
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#4

Re: warten bis ShellExecute beendet ist

  Alt 14. Aug 2004, 16:39
Hallo Armin,

da hab' ich ja Glück gehabt, daß sich Deine Antwort mit meiner "Gefunden-Meldung" überschnitten hat.

Deine Variante gefällt mir persönlich besser und funktioniert bestens.

mfg
eddy
  Mit Zitat antworten Zitat
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 14:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2023, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf