AGB  ·  Datenschutz  ·  Impressum  







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

CreateProcess-Problem

Ein Thema von Susanne · begonnen am 17. Jan 2005 · letzter Beitrag vom 17. Jan 2005
Antwort Antwort
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

CreateProcess-Problem

  Alt 17. Jan 2005, 15:37
hi,

ich starte auf meinem Programm heraus mit CreateProcess ein Programm und warte darauf, dass dieses erst beendet ist, bevor ich weiter mache.

Mein Problem ist nun folgendes. Es kann nun vorkommen, das mein gestartetes Programm Probleme und nicht beendet wird aus welchen Gründen auch immer. Im Ausgangprogramm warte ich also ewigkeiten darauf, dass sich das Programm beendet und wenn ich Pech habe, tut es dann nicht.

Ich möchte nun angeben, dass wenn sich das Programm nicht freiwillig nach, sagen wir mal 1000 Sekunden, beendet hat, dann soll es eben Zwangsweise beendet werden.

Wie erreiche ich das?

Bisher habe ich das:

Delphi-Quellcode:
     if CreateProcess(nil, // lpApplicationName
                         PChar(CmdLine), // lpCommandLine
                         nil, // lpProcessAttributes
                         nil, // lpThreadAttributes
                         false, // bInheritHandles
                         0, // dwCreationFlags
                         nil, // lpEnvironment
                         nil, // lpCurrentDirectory
                         StartupInfo, // lpStartupInfo
                         ProcessInformation then // lpProcessInformation)
                begin
                   // Warteprozess geändert

                   {$IFDEF USEWFO}
                   WFO := TWaitForObject.Create(true);
                   WFO.hProcess := ProcessInformation.hProcess;
                   WFO.Finished := false;
                   WFO.Resume;
                   while not WFO.Finished do
                      begin
                         Sleep(1000);
                         Application.ProcessMessages;
                      end;
                   //WFO.Suspend;
                   WFO.Terminate;
                   WFO.Resume;
                   WFO.WaitFor;
                   WFO.Free;
                   {$ELSE}
                   repeat
                       WaitResult := WaitForSingleObject(ProcessInformation.hProcess,
                                1000);
                       Application.ProcessMessages;
                   until WaitResult = WAIT_OBJECT_0;
                  {$ENDIF}
                  Application.ProcessMessages;
                  CloseHandle(ProcessInformation.hProcess);
                  CloseHandle(ProcessInformation.hThread);
            end;
Susanne
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#2

Re: CreateProcess-Problem

  Alt 17. Jan 2005, 16:05
Hallo Susanne,

der zweite Parameter bei WaiForSingleObject ist in Millisekunden anzugeben.

In deinem Falle von 1000sec also statt 1000 1000000 angeben.


mfg


Edit:

P.S.: Die Repeat-Schleife ist unnötig, da du eh drauf wartest und die Schleife innerhalb von WaitForSingleObject ausgeführt wird.

Ein Application.ProcessMessages sollte auch unnötig sein.


mfg
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: CreateProcess-Problem

  Alt 17. Jan 2005, 17:22
Die Schleife iost nicht unnötig. Läßt man die Schleife weg, reagiert das Fenster nicht mehr.
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 23:42 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