AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Prozess killen, wenn nur window handle bekannt?
Thema durchsuchen
Ansicht
Themen-Optionen

Prozess killen, wenn nur window handle bekannt?

Ein Thema von Jumpy · begonnen am 2. Sep 2011 · letzter Beitrag vom 2. Sep 2011
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#1

Prozess killen, wenn nur window handle bekannt?

  Alt 2. Sep 2011, 20:16
Hallo,

die Frage steht in Zusammenhang mit dem folgnden Thread (der nicht extra gelesen werden muss), hat aber mMn nix mit VBA zu tun, deswegen stell ich sie separat.

http://www.delphipraxis.net/162667-a...en-killen.html


Ich hab mir einen Window-Handle "erobert".

Wie kille ich den dazugehörigen Prozess?

Dazu noch die Info: Der Prozess ist eine (abgestürzte) Excel Instanz. Es sind aber u.U. noch weitere Instanzen und somit Prozesse mit Namen "Excel" vorhanden, die aber nicht aus versehen gekillt werden sollen, es muss der sein, zu dem der windows handle gehört.

Edit: Bevor einer fragt. Habe die Sufu benutzt, aber da geht es immer um Fenstertitel (kann ich aus o.g. Gründen nicht benutzen) und Prozess-Handle oder -ID und das ist doch nicht dasselbe wie der window handle, oder?
Ralph

Geändert von Jumpy ( 2. Sep 2011 um 20:55 Uhr)
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#2

AW: Prozess killen, wenn nur window handle bekannt?

  Alt 2. Sep 2011, 21:12
GetWindowThreadProcessId, TerminateProcess bzw. SendMessage + WM_CLOSE oder so einfach mal googlen
  Mit Zitat antworten Zitat
ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Prozess killen, wenn nur window handle bekannt?

  Alt 2. Sep 2011, 21:15
Ich hab mir einen Window-Handle "erobert".

Wie kille ich den dazugehörigen Prozess?
Code:
const
  PROCESS_MURDER = $0001;

// Target = Window Handle, nicht Process Handle (wie gewünscht)!
procedure KillProcess(Target: Hwnd);
var
  pid: Cardinal;
  ProcessHandle: THandle;
begin
  GetWindowThreadProcessId(Target, @pid);
  ProcessHandle := OpenProcess(PROCESS_MURDER, FALSE, pid);
  TerminateProcess(ProcessHandle, 4);
end;
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Prozess killen, wenn nur window handle bekannt?

  Alt 2. Sep 2011, 21:24
Ahh, danke!

GetWindowThreadProcessId

ist der Zwischenschritt der mir fehlte (Neben der implizierten Info das windo handle <> process ID).

Kann ich Montag gleich wieder durchstarten
Ralph
  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 08:15 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