AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Externes Programm beenden

Ein Thema von SKarin · begonnen am 22. Jul 2013 · letzter Beitrag vom 22. Jul 2013
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Externes Programm beenden

  Alt 22. Jul 2013, 10:55
WinExec gibt nichts zurück, womit man vernünftig weiter arbeiten könnte (wie eine Prozess-ID). KillTask oder KillProcess sagt mir spontan nichts, wie EnumWindows dir hier weiterhelfen soll, versrtehe ich nicht.

Starte den Prozess "einfach" mit CreateProcess (ja, das Teil hat eine lange Parameterliste), dann hast du auch bsp. die Prozess-ID, damit kannst du den Prozess mittels TerminateProcess() einfach abschießen. Falls du das wirklich willst.
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.261 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Externes Programm beenden

  Alt 22. Jul 2013, 11:11
wenn Du die ProzessID hast, dann:

Code:
 
 if (ProcessID<>0) then begin
   Ph:= OpenProcess(1, BOOL(0), ProcessID);
   Ret := TerminateProcess(Ph, 0);
 end;
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.196 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Externes Programm beenden

  Alt 22. Jul 2013, 11:18
Wobei TerminateProcess schon wirklich rabiat ist, das ist als würde man ihn hinterrücks erschießen - Der Prozess sieht es nicht kommen und kann darauf nicht mehr reagieren. Da du erst mit EnumWindows hantiert hast - vielleicht möchtest du den Prozess eher freundlich beenden? Dann könntest du nach seinem Fenster suchen und ihm eine WM_CLOSE -Nachricht senden.

Ob einem das Wissen, wie die .exe-Datei nun heißt überhaupt weiterhilft... Ich glaube nicht. Ich habe bislang immer externe Programme mittels CreateProcess gestartet und am Schluss eine WM_CLOSE geschickt. Waren sie nach einer Zeitspanne immer noch da, weitere WM_CLOSE . Waren sie dann immer noch da, wurde das sofortige Todesurteil mittels TerminateProcess vollstreckt.

Geändert von Der schöne Günther (22. Jul 2013 um 11:20 Uhr)
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.261 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Externes Programm beenden

  Alt 22. Jul 2013, 11:52
Wobei TerminateProcess schon wirklich rabiat ist, das ist als würde man ihn hinterrücks erschießen - Der Prozess sieht es nicht kommen und kann darauf nicht mehr reagieren. Da du erst mit EnumWindows hantiert hast - vielleicht möchtest du den Prozess eher freundlich beenden? Dann könntest du nach seinem Fenster suchen und ihm eine WM_CLOSE -Nachricht senden.

Ob einem das Wissen, wie die .exe-Datei nun heißt überhaupt weiterhilft... Ich glaube nicht. Ich habe bislang immer externe Programme mittels CreateProcess gestartet und am Schluss eine WM_CLOSE geschickt. Waren sie nach einer Zeitspanne immer noch da, weitere WM_CLOSE . Waren sie dann immer noch da, wurde das sofortige Todesurteil mittels TerminateProcess vollstreckt.
Manche Prozesse wollen es ja nicht kommen sehen und sind penetrant. Ich habe das in ein Fahre den PC herunter Programm reinmachen müssen, da das manche Prozesse blockierten, weil die sich für wichtig halten
  Mit Zitat antworten Zitat
Antwort Antwort

 
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 19:47 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-2025 by Thomas Breitkreuz