Zum Inhalt springen

.exe nach einer bestimmten Laufzeit beenden?


pascal87

Empfohlene Beiträge

Ich bin auf der Suche nach einem Befehl o.ä. der in einer .cmd Datei eine exe aufruft und nach Beendigung der exe wieder schließt, es soll also kontrolliert werden, ob die exe Datei fertig ist, die .cmd Datei soll nicht abebrochen werden , also nicht zum Beispiel "stop 10:32".

Wie kann ich es schaffen, dass eine .exe nach einer bestimmten Laufzeit beendet wird? Gibt es sowas überhaupt? Es handelt sich um einen XP Client

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie kann ich es schaffen, dass eine .exe nach einer bestimmten Laufzeit beendet wird? Gibt es sowas überhaupt? Es handelt sich um einen XP Client

Es gibt dir Möglichkeit, mit der Win API ein Programm zu starten und auf dessen Ende zu warten. Das geht über eine Schleife, da kann man also dann auch die Zeit prüfen. Beenden müsste auch gehen. Kann ich dir im Moment aber gar nich auswendig sagen, heute is der erste Tag nach dem Urlaub ;) CreateProcess is der API-Befehl (zum Starten zumindest).

Ob es sowas irgendwo gibt... keine Ahnung. Kannst es dir ja selber programmieren ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Boahh erstmal thx für die wirklich rasante Antwort!

Wenn du gerade aus dem Urlaub kommst ist das klar, ich hab dafür auch noch ein paar Tage Zeit, wäre super, wenn du es postest, wenn dir dazu noch was einfällt, ich habe mich mit der Win API auch noch sogut wie garnicht auseinander gesetzt, bei dir als FIAE wird das wohl anders sein...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also hier hab ich mal nen Delphicode um sowas zu tun (da es sich vorallem um API aufrufe handelt, wird es leicht umzusetzen sein):



procedure StartProg(aPrg: String; aTimeOut: Integer);

var StartupInfo: TStartupInfo;

    ProcessInfo: TProcessInformation;

    TermStatus: LongWord;

begin

  FillChar(StartupInfo, sizeOf(TStartupInfo), 0);

  StartupInfo.cb:= SizeOf(TStartupInfo);

  //*** Programm starten

  if CreateProcess(nil, PChar(aPrg), nil, nil, False, NORMAL_PRIORITY_CLASS,

     nil, nil, StartupInfo, ProcessInfo) then

  begin

    //*** Warten bis Programm beendet ist, aTimeOut = Millisekunden die 

    //*** maximal gewartet werden sollen

    WaitForSingleObject(ProcessInfo.hProcess, aTimeOut);

    //*** Prüfen ob Programm noch läuft

    GetExitCodeProcess(ProcessInfo.hProcess, TermStatus);

    //*** Programm beenden

    if TermStatus = STILL_ACTIVE then

      TerminateProcess(ProcessInfo.hProcess, 0);

    //*** Handle wieder freigeben

    CloseHandle(ProcessInfo.hProcess);

  end;


end;


Alles ab //*** Prüfen ob Programm noch läuft hab ich noch nicht probiert, das ist alles nur theoretisch. Auch TerminateProcess ist nicht der bevorzugte Weg, ich hab aber auf die schnelle keinen anderen Weg gefunden (bzw. hab keine Ahnung, wie ich ExitProcess einsetze). So als Denkanstoss sollte das aber reichen hoff ich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...