![]() |
Speicherauslastung einer Anwendung?
Hai,
wie kann ich den auslesen wieveil Speicher eine bestimmte Anwendung verwendet (So wie im Taskmanager angezeigt). Wenn ich mit den diversen Codes aus dem Forum die ProzessID ermittele und dann den Speicherverbrauch dieses Prozesses auslese stimmt der Wet nicht einmal ansatzweise mit dem des Taskmanagers überein. Hat da jemand einen Tipp für mich? |
Re: Speicherauslastung einer Anwendung?
Es wäre interessant zu wissen wie du es denn bisher versucht hast?
Ich habe mal so ne Speicherauslastungsanzeige für mein programm gemacht, mit GetProcessMemoryInfo, und das hat eigentlich recht gut hingehauen, und immer gaanz genau den Wert gebracht, der im Taskmanger unter Speicherauslastung stand. Ich habe diesen Code dafür verwendet:
Delphi-Quellcode:
(hab den code kurz nen bissl umgeschrieben, sollte funzen ...)
function GetWorkingSetSize : integer;
var pmc: PPROCESS_MEMORY_COUNTERS; cb: Integer; begin cb := SizeOf(_PROCESS_MEMORY_COUNTERS); GetMem(pmc, cb); pmc^.cb := cb; if(GetProcessMemoryInfo(GetCurrentProcess, pmc, cb))then result := pmc^.WorkingSetSize div 1024; else result := -1; FreeMem(pmc); end; Der Code stammt aber ursprünglich auch aus der DP, wenn ich mich nicht irre ... Für diese Funktion brauchst du aber ein Handle zum Prozess, d.h. dass du per OpenProcess dir eines holen musst ... ciao, Philipp |
Re: Speicherauslastung einer Anwendung?
Zitat:
diesen Code verwende ich auch. Aber ich dachte ich bräuchte dafür die ProzessID und nicht den Handle. Also liegt wohl dort mein Fehler? |
Re: Speicherauslastung einer Anwendung?
MSDN Platform SDK GetProcessMemoryInfo Parameters: Process: [in] Handle to the process. ppsmemCounters: [out] Pointer to the PROCESS_MEMORY_COUNTERS structure that receives information about the memory usage of the process. cb: [in] Specifies the size, in bytes, of the PROCESS_MEMORY_COUNTERS structure. Dann versuch mal den prozess per
Delphi-Quellcode:
zu öffnen.
OpenProcess(PROCESS_ALL_ACCESS,false,PID)
ciao, Philipp |
Re: Speicherauslastung einer Anwendung?
Zitat:
jetzt geht es. Ich danke Dir. |
Re: Speicherauslastung einer Anwendung?
Welche Units muss ich da noch einbinden?
Mein D2005 PE kennt ja nicht mal die Datentypen, da ist eigentlich alles als unbekannt rot unterschlängelt... |
Re: Speicherauslastung einer Anwendung?
Moin Ventilator,
dafür benötigst Du noch die Unit psapi. |
AW: Re: Speicherauslastung einer Anwendung?
Zitat:
Hi, ich habe genau das gleiche Problem wie du, Sharky. Leider ist mir nicht bewusst wo ich die hier angegebene Zeile einsetzen muss. Kann mir dort jemand weiter helfen? EDIT: Würde ebenfalls gern wissen wo ich die PID herbekomme! Also wo muss das eingebaut werden..schön wäre auch noch eine Erklärung damit ich nicht ganz dumm sterbe :) Gruß |
AW: Speicherauslastung einer Anwendung?
Da wo ganz oben mit GetCurrentProcess der die eigene Anwendung übergeben wird, kannst du das Handle irgendeiner Anwendung übergeben, welches man sich z.B. auch über
![]() ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 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