AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Prozess sanft beenden (ohne Fenster)
Thema durchsuchen
Ansicht
Themen-Optionen

Prozess sanft beenden (ohne Fenster)

Ein Thema von Alien426 · begonnen am 29. Aug 2010 · letzter Beitrag vom 31. Aug 2010
Antwort Antwort
Seite 2 von 2     12   
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#11

AW: Prozess sanft beenden (ohne Fenster)

  Alt 31. Aug 2010, 00:59
Man kann doch apache auch das Ctrl+Break Signal schicken, oder?

GenerateConsoleCtrlEvent, wobei Parameter dwProcessGroupId die ProcessID ist. Dummerweise muss noch eine (dort dokumentierte) Bedingung gelten.
Ich habe es nicht testen können.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#12

AW: Prozess sanft beenden (ohne Fenster)

  Alt 31. Aug 2010, 22:09
Man kann doch apache auch das Ctrl+Break Signal schicken, oder?
[...]
Dummerweise muss noch eine (dort dokumentierte) Bedingung gelten.
Meinst du die Flag CREATE_NEW_PROCESS_GROUP?

Habe von ShellExecuteEx() zu CreateProcess() gewechselt und verschiedene Varianten von CreationFlags ausprobiert (auch mit/ohne CREATE_NO_WINDOW, um die Konsole zu unterdrücken; CREATE_NEW_PROCESS_GROUP verhindert wie beschrieben das manuelle Beenden mittels [Strg]+[C]), aber es funktioniert nicht. Liefert immer False zurück und GetLastError() immer den Wert 6...

Die ProzessID für den Aufruf von GenerateConsoleCtrlEvent() habe ich übrigens mit dem Process Explorer von Microsoft/Sysinternals abgeglichen. Die stimmt.
  Mit Zitat antworten Zitat
Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#13

AW: Prozess sanft beenden (ohne Fenster)

  Alt 31. Aug 2010, 22:32
Für Programme die so etwas nicht unterstützen kann man mit PostThreadMessage die entsprechende Quit-Message in die Messagequeue des Threads absetzen.
Wie im vorigen Beitrag geschrieben, habe ich auf CreateProcess() umgestellt. So bekomme ich auch eine Thread ID (auch mit Process Explorer überprüft).

Das Senden von WM_CLOSE / WM_QUIT an den Thread ist erfolgreich. Es geschieht aber nichts.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:24 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