AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RunAndWait in For-Schleife

Ein Thema von kabuco · begonnen am 15. Jul 2006 · letzter Beitrag vom 17. Jul 2006
Antwort Antwort
kabuco
(Gast)

n/a Beiträge
 
#1

RunAndWait in For-Schleife

  Alt 15. Jul 2006, 20:58
Hallo,

habe folgendes Problem zu später Stunde (naja ist ja Wochenende!):

ich habe mir hier im Forum die Prozedur RunAndWaitShell() gefunden und direkt eingebaut, allerdings in eine For-Schleife. Jetzt habe ich das Problem, dass das Programm die erste Datei nicht öffnet und nicht mehr Reagiert.
Gibt es da andere Möglichkeiten, in Schleifen (jeder Art) Programme Aufzurufen und erst dann die Schleife weiterlaufen zu lassen, wenn das Programm beendet wurde?

Gruß kabuco
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: RunAndWait in For-Schleife

  Alt 15. Jul 2006, 21:07
Du könntest CreateProcess nehmen und warden bis der andere Prozess bereit ist oder wieder beendet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: RunAndWait in For-Schleife

  Alt 15. Jul 2006, 23:18
Moin Zusammen,

alternativ zu CreateProcess ginge auch ShellExecuteEx.

[EDIT]
Wenn ich mir allerdings anschaue, dass die Funktion RunAndWaitShell heisst, wird sie wohl eine der beiden Funktionen verwenden.

@Kabuco:
Die Funktion wird doch bestimmt einen Rückgabewert haben, oder einen Parameter der das gewünschte macht.

[/EDIT]
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
kabuco
(Gast)

n/a Beiträge
 
#4

Re: RunAndWait in For-Schleife

  Alt 16. Jul 2006, 13:32
Hallo,

hier die Funktion, die ich verwende:
Delphi-Quellcode:
procedure TForm6.RunAndWaitShell(Executable, Parameter: STRING; ShowParameter: INTEGER);
var
  Info: TShellExecuteInfo;
  pInfo: PShellExecuteInfo;
  exitCode: DWord;
begin
  {Pointer to Info}
  pInfo := @Info;
  {Fill info}
  with Info do
  begin
    cbSize := SizeOf(Info);
    fMask := SEE_MASK_NOCLOSEPROCESS;
    wnd := application.Handle;
    lpVerb := NIL;
    lpFile := PChar(Executable);
    {Parametros al ejecutable}
    {Executable parameters}
    lpParameters := PChar(Parameter + #0);
    lpDirectory := NIL;
    nShow := ShowParameter;
    hInstApp := 0;
  end;
  {Execute}
  ShellExecuteEx(pInfo);

  {Wait to finish}
  repeat
    exitCode := WaitForSingleObject(Info.hProcess, 500);
    Application.ProcessMessages;
  until (exitCode <> WAIT_TIMEOUT);
end;
Wie zu sehen ist, hat die Funktion keinen Rückgabewert. Man könnte aber einen einbauen, nur weiß ich jetzt leider nicht, wo ich den Rückgabewert setzen muss!?

gruß kabuco
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: RunAndWait in For-Schleife

  Alt 16. Jul 2006, 16:23
Moin Florian,

da dürfte Dein Programm eigentlich nicht hängen bleiben.
Dass es in der Zeile stehenbleibt wäre normal, da die Funktion erst zurückkehrt, nachdem das externe Programm beendet wurde.
Geh' doch mal im Einzelschritt da durch.

Ggf. kannst Du Dir mal den Rückgabewert von ShellExecuteEx ansehen.
Ist der false, kannst Du Dir mit

ShowMessage(SysErrorMessage(GetLastError)); mal ansehen, was schiefgegangen ist.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
kabuco
(Gast)

n/a Beiträge
 
#6

Re: RunAndWait in For-Schleife

  Alt 17. Jul 2006, 17:48
Hallo,

habe mein Problem gelöst indem ich den Prozeduraufruf einfach in eine repeat...until schleife gesteckt habe. Die Schleife wird mit einer Zählervariablen gesteuert. Im Prinzip genau wie in der For-Schleife! Weis auch nicht, warum das jetzt funktioniert. Naja, Hauptsache es funktioniert!

Gruß kabuco
  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 22:34 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