AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Speicherauslastung einer Anwendung?
Thema durchsuchen
Ansicht
Themen-Optionen

Speicherauslastung einer Anwendung?

Ein Thema von Sharky · begonnen am 14. Aug 2004 · letzter Beitrag vom 27. Jan 2011
Antwort Antwort
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#1

Speicherauslastung einer Anwendung?

  Alt 14. Aug 2004, 10:42
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?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Speicherauslastung einer Anwendung?

  Alt 14. Aug 2004, 11:54
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:
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;
(hab den code kurz nen bissl umgeschrieben, sollte funzen ...)
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
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Speicherauslastung einer Anwendung?

  Alt 14. Aug 2004, 11:59
Zitat von c113plpbr:
...Für diese Funktion brauchst du aber ein Handle zum Prozess, d.h. dass du per OpenProcess dir eines holen musst ...
Hai Philipp,
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?
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#4

Re: Speicherauslastung einer Anwendung?

  Alt 14. Aug 2004, 12:05
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 OpenProcess(PROCESS_ALL_ACCESS,false,PID) zu öffnen.

ciao, Philipp
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Speicherauslastung einer Anwendung?

  Alt 14. Aug 2004, 12:11
Zitat von c113plpbr:
...Dann versuch mal den prozess per OpenProcess(PROCESS_ALL_ACCESS,false,PID) zu öffnen....
Bingo
jetzt geht es. Ich danke Dir.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Speicherauslastung einer Anwendung?

  Alt 6. Jul 2006, 19:23
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...
Codito, ergo sum. - I code therefore I am
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Speicherauslastung einer Anwendung?

  Alt 6. Jul 2006, 21:27
Moin Ventilator,

dafür benötigst Du noch die Unit psapi.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Re: Speicherauslastung einer Anwendung?

  Alt 27. Jan 2011, 10:59
Zitat von c113plpbr:
...Dann versuch mal den prozess per OpenProcess(PROCESS_ALL_ACCESS,false,PID) zu öffnen....
Bingo
jetzt geht es. Ich danke Dir.

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ß
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.049 Beiträge
 
Delphi 12 Athens
 
#9

AW: Speicherauslastung einer Anwendung?

  Alt 27. Jan 2011, 11:49
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 MSDN-Library durchsuchenOpenProcess besorgen kann, wenn es um eine fremde Anwendung geht.

Hier im Forum suchenProzesse auflisten (ansonsten "neue Frage neuer Thread")
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  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 12:23 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