![]() |
Ungültiges Handle bei TerminateProcess
Hi,
Hiermit speichere ich alle laufenden Prozesse in ein Array:
Delphi-Quellcode:
In einem Thread lade ich dann Stringressourcen und vergleiche die mit den Prozessnamen aus meiner Liste:
TProcessInfo = record
Name: String; ID : Cardinal; end; TProcessInfos = Array of TProcessInfo; function GetAllProcesses: TProcessInfos; var hProcSnap: THandle; proc: PROCESSENTRY32; Count: Integer; begin Count := 0; hProcSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS or TH32CS_SNAPMODULE, 0); FillChar(proc,SizeOf(PROCESSENTRY32),#0); proc.dwSize := SizeOf(PROCESSENTRY32); if Process32First(hProcSnap,proc) then begin inc(Count); SetLength(Result,Count); Result[Count-1].Name := proc.szExeFile; Result[Count-1].ID := proc.th32ProcessID; while Process32Next(hProcSnap,proc) do begin inc(Count); SetLength(Result,Count); Result[Count-1].Name := proc.szExeFile; Result[Count-1].ID := proc.th32ProcessID; end; end; end;
Delphi-Quellcode:
Was ist das Problem? Also die Werte im Array und aus der Ressource sind in Ordnung.. Die ProcessID's im Array.. Ka ob die richtig sind aber sie sind auf jeden Fall mal gültige Handles (Sagt mir mein Auge).
Processes := GetAllProcesses;
while LoadString(hInstance,1000 + i,Res,MAX_PATH) <> 0 do begin inc(i); x := IndexOf(Res,Processes); // IndexOf ist ne eigene Funktion die den Index des Array-Eintrags mit dem Namen der in Res steht zurück gibt if x <> -1 then // falls Eintrag vorhanden begin TerminateProcess(Processes[x].ID,0); ShowMessage(SysErrorMessage(GetLastError)); // <-- Ungültiges Fensterhandle (klappt auch ohne ShowMessage nicht wenn jetzt jemand sagt das man im Thread sowas nicht benutzt... end; end; Gruß Neutral General |
Re: Ungültiges Handle bei TerminateProcess
Hat sich mal wieder erledigt.. Hab 10 Sekunden nach dem Posten in der Suche doch noch was gefunden...
Delphi-Quellcode:
Wusste gar nicht das es en Unterschied zwischen dem da oben und der ProcessID von Process32 gibt... :gruebel:
h := OpenProcess(Process_Terminate, false, Processes[x].ID);
|
Re: Ungültiges Handle bei TerminateProcess
Moin Michael,
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 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