Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Den Speicherverbrauch und die Basispriorität eines Prozesses (https://www.delphipraxis.net/92026-den-speicherverbrauch-und-die-basisprioritaet-eines-prozesses.html)

RWarnecke 13. Mai 2007 16:21


Den Speicherverbrauch und die Basispriorität eines Prozesses
 
Hallo,

ich möchte den Speicherverbauch und die Basispriorität eines Prozesses anhand der ID auslesen. In der NSDN library habe ich den Befehl GetProcessByID gefunden und anhand der Beispiele von C# und C++ festgestellt, das es genau das ist, was ich suche. Nur wie übersetze ich das ganze jetzt nach Delphi ? Ich könnte das ja auch versuchen in C# oder C++ in eine DLL zu packen, nur dann brauche ich wahrscheinlich .NET-Framework für mein Programm oder ?

Khabarakh 13. Mai 2007 16:29

Re: Den Speicherverbrauch und die Basispriorität eines Proze
 
Die FCL-Klassen sind oft übelst praktisch, das muss man schon sagen ;) . Wie du schon selbst erraten hast, setzt jedoch die Verwendung jedweder .Net-Assembly ein installiertes Framework voraus. Der Reflector sagt mir jedenfalls, dass die genannte Methode in einer PID-Liste nachschlägt, die mit der API-Funktion EnumProcesses erstellt wurde.

RWarnecke 13. Mai 2007 16:37

Re: Den Speicherverbrauch und die Basispriorität eines Proze
 
Irgendwie werde ich aus Deinem Beitrag nicht ganz schlau. Verstehe ich das richtig, was ich unter C# mit GetProcessByID mache muss ich unter Delphi mit EnumProcess machen ?

Khabarakh 13. Mai 2007 16:45

Re: Den Speicherverbrauch und die Basispriorität eines Proze
 
Da war ich ein wenig vorschnell, weil sich der Reflector in Luft aufgelöst hatte - das Framework benutzt EnumProcesses nur zum Überprüfen, ob die PID überhaupt existiert! Der für dich wichtige Teil ist um Einiges komplexer - für Nicht-NT-Windosen verwendet er Process32First/Next (kernel32.dll), um eine Struktur namens ProcessInfo zu füllen, ab NT "NtQuerySystemInformation" (ntdll.dll). Vielleicht findest du ja einen Delphi-Wrapper für dein Problem, denn der Code sieht wirklich nicht schön aus. Direkt nach Delphi kannst du diese nützliche Methode jedenfalls nicht konvertieren.

Christian Seehase 13. Mai 2007 16:50

Re: Den Speicherverbrauch und die Basispriorität eines Proze
 
Moin Rolf,

auf jeden Fall sollte es möglich sein, diese Informationen auch direkt über die Windows-API zu bekommen, denn intern wird das .NET-Framework auch nichts anderes aufrufen.

RWarnecke 13. Mai 2007 16:55

Re: Den Speicherverbrauch und die Basispriorität eines Proze
 
Also, was wäre jetzt sinnvoller, welchen Schritt würdet Ihr gehen. Ich bin mir da gerade noch etwas unschlüssig.

Erstens:
Die nötigen Funktionen in C# zu schreiben und dann daraus eine DLL machen.
Zweitens:
Das ganze nach Delphi portieren und dort verwenden.

Zu erstens habe ich dann noch eine Frage, funktioniert das ganze auch dann, wenn ich keine Version von .NET Framework installiert habe ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 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