Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - CPU Auslastung in einer ProgressBar anzeigen?


brainkopf - Sa 24.11.07 18:13
Titel: CPU Auslastung in einer ProgressBar anzeigen?
Hi,
Ich würde gerne die CPU Auslastung in einer ProgressBar anzeigen. Leider habe ich bisjetzt noch nirgends was passendes gefunden. Wenn mir jemand die Lösung sagen könnte, wäre ich sehr dankbar. bei Dual Cores oder Quad Cores sollte die Durschnittsauslastung pro Kern angegeben werden.
Ist sowas möglich?

mfg
brainkopf


Delete - Sa 24.11.07 18:52

Guckst Du hier:

http://www.delphipraxis.net/topic82662_cpuview.html&highlight=cpuview


brainkopf - Sa 24.11.07 19:51

Kann evtl. jemand das ganze hier hochladen,
weil ich kann gerade nicht auf meine emails zugreifen weil er server tot ist.


Delete - Sa 24.11.07 20:04

Im Anhang ist der Source Code:


brainkopf - Sa 24.11.07 20:13

vielen Dank!
Ich schaus mir mal an!

Edit: das ist kein Code! Das ist ne .exe!!


brainkopf - Sa 24.11.07 20:41

Muss ich da noch irgenetwas davor installieren?
Das funktioniert nicht.


Delete - Sa 24.11.07 20:59

user profile iconbrainkopf hat folgendes geschrieben:
Muss ich da noch irgenetwas davor installieren?
Das funktioniert nicht.


Das findet man im Systray - nach dem Anklicken wird das Programm beendet.
Du musst es entsprechend ändern.


brainkopf - Do 06.12.07 17:13

hmm. also nach Copy und Paste und abändern, funzt das immer noch nicht.
Liegt das vielleicht an meinem Delphi?
ich hab Turbo Delphi 2006


brainkopf - Fr 07.12.07 19:06

also wie im oberen Post schon erwähnt ist, funktioniert da sganze bei mir nicht so wirklich.

Also dieser Part funktioniert: Das auslesen des Memory Usage:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm4.Timer1Timer(Sender: TObject);
var
  x, y : real;
  memory: TMemoryStatus;
  Auslastung: integer;
  MS: TMemoryStatus;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  x := memory.dwTotalPhys - memory.dwAvailPhys;
  y := memory.dwTotalPhys;
  Auslastung := round(((x/y)*100));
  FreeResBar.Position := Auslastung;
end;


Nur irgendwie bekomme ich es nicht hin das auf die cpu auslastung zuzuschneiden!

Moderiert von user profile iconjasocul: Highlight- durch Delphi-Tags ersetzt


Blawen - Fr 07.12.07 19:38

user profile iconbrainkopf hat folgendes geschrieben:
Nur irgendwie bekomme ich es nicht hin das auf die cpu auslastung zuzuschneiden!
Diese Procedur ist irgendwie ja auch auf den Speicher zugeschnitten. Abändern genügt also nicht...

Im Verzeichnis liegt auch eine Datei Namens "adCpuUsage.pas", Du musst sie eigentlich nur verwenden...!


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
uses
    Windows, SysUtils,unit1,Dialogs;

// Call CollectCPUData to refresh information about CPU usage
procedure CollectCPUData;

// Call it to obtain the number of CPU's in the system
function GetCPUCount: Integer;

// Call it to obtain the % of usage for given CPU
function GetCPUUsage(Index: Integer): Double;

// For Win9x only: call it to stop CPU usage monitoring and free system resources
procedure ReleaseCPUData;


brainkopf - Sa 08.12.07 14:14

so. jetzt markiert der mir aber das hier rot!

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
adCpuUsage, Dialogs, StdCtrls, ExtCtrls, ComCtrls, Menus, FileCtrl, Buttons;


was ist da Falsch`? Also das adCpuUsage ist anscheinen falsch!
Die adCpuUsage.pas ist im Verzeichnis und zum Projekt hinzugefügt worden!


OlafSt - Mo 10.12.07 11:52

Danke für die aussagekräftige Fehlermeldung, die du gepostet hast.


brainkopf - Mo 10.12.07 16:42

tut mir leid. ich hatte wenig Zeit. Hier etwas umfangreicher.

Also. Wie schon gesagt, das Programm markiert folgendes rot:


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
adCpuUsage, Dialogs, StdCtrls, ExtCtrls, ComCtrls, Menus, FileCtrl, Buttons;

Die Datei adCpuUsage.pas ist im Projekt mit drin und wird ja eigentlich mit der oberen Anweisung mit eingefügt!

Außerdem zeigt er noch folgenen Fehler an!

[Pascal Fataler Feher] Main.pas(7): F2047 Zirkuläre Unit-Referenz auf 'Main'

So. ich hoff eihr könnt damit was anfangen!


Delete - Di 11.12.07 08:29

adCpuUsage steht doch weiter unten schon drin - also: muss es oben raus!


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
implementation

{$R *.dfm}

uses adCpuUsage;
.
.
.


brainkopf - Di 11.12.07 17:59

danke!
Daran habe ich gar nicht gedacht!!!