![]() |
EnumProcesses
Liste der Anhänge anzeigen (Anzahl: 2)
EnumProcesses
Aktuelle Version: 1.0.0.17 Eigentlich wollte ich nur alten Code von mir sauber in eine Klasse kapseln, allerdings ist dann das Testprogramm doch ganz brauchbar geworden, wie ich denke. EnumProcesses listet alle Processes im System auf und kann optional folgende Informationen anzeigen:
Mit dem Parameter /k:<PID> kann der Prozess mit der angegebenen ProzessID beendet werden. Übersicht über die möglichen Kommandozeilenparamter:
Code:
Commandline switches:
/I: ProcessID /J: Parent process ProcessID /F: Filename /P: Path inclusive filename /O: Process owner /C: Base priority class /T: Thread count /M: Module count /T: Createtime of process /U: CPU usage time /K:<PID>: Kill process with the given PID |
Re: EnumProcesses
Der Code für function FormatW und function SysErrorMessage kommt zweimal vor. Das könnte man z.B. in eine eigene Unit namens SysUtilsNonVcl auslagern.
|
Re: EnumProcesses
Ich weiß. Normalerweise benutze ich dazu auch meine Unit MpuTools.pas. Aber weil ich nur ein paar wenige Funktionen brauchte, habe ich die mir nur rauskopiert.
|
Re: EnumProcesses
Hi Luckie,
ist es auch möglich mit deiner Unit die CPU Auslastung herauszubekommen je Prozess? Momentan gibts ja nur die länge der CPU Nutzung. Beste Grüße Nakaron |
Re: EnumProcesses
Nein, aber die kannst du dir ja selber ausrechnen anhand der CPU-Zeit.
|
Re: EnumProcesses
Ich nehme mal an das ich die CPU Auslastung aus folgendem Code ausrechnen kann oder?
Delphi-Quellcode:
Ich habe mit den Werten von KernelTime64, UserTime64, CPUTime64 und CPUTimeft schon etwas rumprobiert. Da ich mich allerdings damit nicht auskenne, habe ich es bisher noch nicht rausbekommen.
function PrintCPUTime(Process: TProcess): WideString;
var KernelTime64 : LARGE_INTEGER; //TFileTime; UserTime64 : LARGE_INTEGER; CPUTime64 : LARGE_INTEGER; CPUTimeft : TFileTime; st : TSystemTime; TimeStr : array[0..254] of WideChar; Kernel, User : Cardinal; dwTime : DWORD; begin KernelTime64.LowPart := Process.KernelTime.dwLowDateTime; KernelTime64.HighPart := Process.KernelTime.dwHighDateTime; UserTime64.LowPart := Process.UserTime.dwLowDateTime; UserTime64.HighPart := Process.UserTime.dwHighDateTime; CPUTime64.QuadPart := KernelTime64.QuadPart + UserTime64.QuadPart; CPUTimeft.dwLowDateTime := CPUTime64.LowPart; CPUTimeft.dwHighDateTime := CPUTime64.HighPart; FileTimeToSystemTime(CPUTimeft, st); GetTimeFormatW(LOCALE_SYSTEM_DEFAULT, TIME_FORCE24HOURFORMAT, @st, nil, TimeStr, SizeOf(TimeStr)); Result := WideString(TimeStr); end; Könntest du mir vielleicht einen Denkanstoß geben? Beste Grüße Nakaron |
Re: EnumProcesses
Hallo Luckie,
ich glaube, ich habe ein Memory-Leak in Deinem Code gefunden. In folgender Funktion aus den MPUProcessTools:
Delphi-Quellcode:
Wird der zurückgegebene Buffer nicht freigegeben.
function SidToString(ASID: PSID): WideString;
var sDummy : PWideChar; begin ConvertSidToStringSid(ASID, sDummy); Result := string(sDummy); end;
Delphi-Quellcode:
LocalFree(Cardinal(sDummy));
Gruß |
Re: EnumProcesses
Hallo Luckie, zunächst einmal: feines Programm!
Aber eines kann ich nicht nachvollziehen: Mit Deinem Programm kann man so ziemlich alles beenden, jedenfalls auch einige der Systemprozesse, die auch der ProcessExplorer der Sysinternals abgeschossen bekommt. Verwende ich die m.E. relevanten Befehle zum Beenden der Prozesse, komme ich jedoch nur auf gewöhnliche Beendbarkeit, wie sie auch der Taskmanager bietet: Systemprozesse bleiben unantastbar. Meine „Forschungen“ sind inzwischen soweit gediegen (oder gediehen), daß bei mir mit diesem Befehl
Delphi-Quellcode:
, auf Systemprozesse angewandt, hProcess gleich Null ist. Also, irgendetwas ist bei meinem simplen Aufruf anders als in Deinem Programm.
hProcess:=OpenProcess(SYNCHRONIZE or PROCESS_TERMINATE,False,PID)
Darf ich Dich vorsichtig fragen, welches - von mir leider bisher nicht erkannte - Geheimnis Dein Programm beherbergt, daß es auch die meisten Systemprozesse terminieren kann? Gruß Delphi-Laie |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 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