AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Childprocess von CreateProcess Terminieren

Childprocess von CreateProcess Terminieren

Ein Thema von Alex.P · begonnen am 12. Apr 2010 · letzter Beitrag vom 12. Apr 2010
Antwort Antwort
Alex.P

Registriert seit: 7. Okt 2009
Ort: Ingolstadt
24 Beiträge
 
#1

Childprocess von CreateProcess Terminieren

  Alt 12. Apr 2010, 10:49
Hallo,

ich starte über CreateProcess eine Dos-Batch in der Windows cmd.
Ich kann das Programm nicht direkt starten, da ich sonst die Konsolenausgabe nicht umgeleitet bekomme.
Also wird ein cmd.exe Prozess gestartet, der wiederum ein ChildProzess mit meinem Programm startet.

Mit ProzessHandle := ProcessInfo.hProcess bekomme ich allerdings nur den Handle der cmd zurück.

Meine Frage ist jetzt, wie ich an den korreckten Child Process Handle komme wenn ich ihn terminieren will.
Über den Namen der exe geht es nicht, da ich das Programm mehrmals gleichzeitig starte.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Childprocess von CreateProcess Terminieren

  Alt 12. Apr 2010, 11:20
Hallo,

Ich würde mal sagen gar nicht, oder nicht ohne größere Aktionen.
Kannst du nicht das jeweilige Programm selbst starten und die Konsolenausgabe über Pipes umleiten? Das müsste doch gehen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Alex.P

Registriert seit: 7. Okt 2009
Ort: Ingolstadt
24 Beiträge
 
#3

Re: Childprocess von CreateProcess Terminieren

  Alt 12. Apr 2010, 11:27
Das umleiten über Pipes geht auch nicht. Das Programm puffert seine Ausgabe extrem und gibt die Ausgabe nicht direkt an die Konsole weiter. Jeder Versuch es direkt auszuführen ist gescheitert.

Habe hier eine Funktion gefunden, mit der ich den ChildProcess ID korrekt zurück bekomme:
http://www.delphipraxis.net/internal...ct.php?t=95503

Allerdings lässt er sich mit TerminateProcess nicht killen.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Childprocess von CreateProcess Terminieren

  Alt 12. Apr 2010, 11:30
Über die ID kannst du doch per OpenProcess das Handle bekommen. Und damit kannst du dann über TerminateProcess den ChildProcess killen.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Alex.P

Registriert seit: 7. Okt 2009
Ort: Ingolstadt
24 Beiträge
 
#5

Re: Childprocess von CreateProcess Terminieren

  Alt 12. Apr 2010, 12:35
Das war schon mal der erste Denkfehler.
Ich brauch das Handle.
Das Handle bekomme ich zwar mit
ChildProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION, false, PROCS.th32ProcessID); zurück,
TerminateProcess kommt aber immer noch mit false zurück und der Prozess läuft weiter.
Der Code läuft im einem Thread, Synchronize bringt allerdings auch nichts.
Der ParentProzess lässt sich ohne weiteres killen.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Childprocess von CreateProcess Terminieren

  Alt 12. Apr 2010, 12:37
Versuche es mal mit

OpenProcess(PROCESS_ALL_ACCESS, false, PROCS.th32ProcessID); Das Terminieren ist ja wohl noch eine Stufe höher als nur "QUERY_INFORMATION"
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Alex.P

Registriert seit: 7. Okt 2009
Ort: Ingolstadt
24 Beiträge
 
#7

Re: Childprocess von CreateProcess Terminieren

  Alt 12. Apr 2010, 12:42
Ja, das wars!!!
Super!!!
Danke!!!

Hab jetzt ne Exception, aber das find ich dann alleine raus.
  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 19:29 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