Autor Beitrag
RFZ
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: Mi 07.01.04 11:21 
Moin,
ich würd gern unter Win9x die CPU-Auslastung messen. Dabei gibt es leider ein Problem:
Wenn Win9x im ACPI Modus installiert ist, zeigt der Systemmonitor eine falsche auslastung (Microsoft Knowledge Base Q227131).
Erkennen kann man die falsche Auslastung daran, dass sie meisst über 20% liegt (manchmal immer 100%) und v.a. stark fällt wenn man die Maus bewegt.
Dieses Problem hab ich mit Delphi auch, wenn ich z.B. AdCpuUsage nutze, oder die Daten aus der Registry (geht eh nur bei 9x) lese.
Das Shareware Tool "CPU Indicator" zeigt z.B. die richtige Auslastung.
Kennt jemand von euch noch Komponenten die ich versuchen kann?

cu RFZ
Alexander F
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 149

Win XP, Win 2000
D6 PE, D7 Prof, D8 Prof
BeitragVerfasst: Do 08.01.04 15:33 
RFZ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: Do 08.01.04 18:16 
Sorry, das selbe Problem.... in Ruhe 30%, bei Mausbewegung 1%...

cu RFZ
mica
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 02.02.04 13:34 
Titel: CPU-Auslastung
Hallo erstmal,

Genau, das versuche ich auch.
Ich versuche die CPU-Auslastung grafisch darzustellen.
Kannst du mir verraten wie das geht, falls du das Problem schon lösen konntest.
Ich benutze XP-Home
Bin noch Anfänger in Delphi.

Gruß

Mica
Phantom1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 390



BeitragVerfasst: Mo 02.02.04 14:28 
@mica: das graphisch anzuzeigen ist eigentlich kein problem, das problem mit win98 kann nicht probieren da ich kein win98 habe.

hier mal ein einfaches beispiel, du braucht ein image und ein timer auf dem formular:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, adcpuusage;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
    CPULast: Array[0..80Of Byte;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Width:=400;
  Image1.Height:=100;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
Var i: Integer;
begin
  CollectCPUData;
  For i:=79 DownTo 0 Do
    CPULast[i+1]:=CPULast[i];
  CPULast[0]:=Round(GetCPUUsage(0)*100);

  Image1.Picture.Bitmap:=Nil;
  With Image1, Canvas Do Begin
    MoveTo(0,Pred(Height)-CPULast[0]);
    For i:=1 To 80 Do
      LineTo(i*5,Pred(Height)-CPULast[i]);
  End;
end;

end.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 02.02.04 14:38 
Unter Win98 kann man die CPU Auslastung nicht korrekt auslesen. Das gibt das OS einfach nicht her.
RFZ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: Mo 02.02.04 14:56 
@Luckie
Ich hab doch ein Tool gepostet welches es kann, also muss es auch irgendwie machbar sein ;)

cu RFZ
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 02.02.04 15:03 
wer weiß, was das Tool macht. oder gibt es den Source dazu? Man kann es eventuell irgendwie ungefähr errechnen. Fakt ist aber, dass ConsumerWindows keine direkte Möglichkeit bietet sie direkt zu ermitteln mittels einer API.
RFZ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: Mo 02.02.04 15:10 
leider hab ich zu dem tool absolut keine Info gefunden... Muss ja nicht mit API sein, kann ja auch irgendwie anders funktionieren...
mica
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 02.02.04 15:36 
@phantom1
Das sieht ja gar nicht mal so schwer aus.
Das versuche ich mal, wenn ich heut nach Hus komm.
Ansonsten, melde ich mich nocheinmal.

Danke und Gruß
Mica
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 02.02.04 19:53 
RFZ hat folgendes geschrieben:
leider hab ich zu dem tool absolut keine Info gefunden... Muss ja nicht mit API sein, kann ja auch irgendwie anders funktionieren...

Was gbt es anderes als die API bei Windows? :roll:
RFZ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 137

WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
BeitragVerfasst: Mo 02.02.04 20:24 
ich hab keine ahnung ;) aber irgendwas muss es ja geben ....
mica
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 02.02.04 20:30 
@phantom1

:cry:
Hab versucht deinen Quelltext zum laufen zu bringen.
1.) einen timer und ein Image aufs Formular pgepflanzt
2.)Den gesamten Quellcode von dir über meinen Quellcode kopiert
3.)F9

Das compilieren stoppt mit :
-[Fehler] Unit1.pas(36): Undefinierter Bezeichner: 'CollectCPUData'
-[Fehler] Unit1.pas(38): Undefinierter Bezeichner: 'CPULast'
-[Fehler] Unit1.pas(39): Undefinierter Bezeichner: 'GetCPUUsage'
-...

Was mache ich falsch?(Ich benutze Delphi 5)

Gruß
Mica
Phantom1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 390



BeitragVerfasst: Mo 02.02.04 20:33 
@mica: hast du die unit adcpuusage in das verzeichniss von der anwendung kopiert?
mica
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 02.02.04 21:32 
@phantom1
hmm...verstehe ich nicht.

adcpuusage unit ist doch der Quelltext, mit dem du mir geantwortet hast,oder?
ich habe einfach eine neue Anwendung gestartet und dein Quelltext in meine Unit1.pas kopiert.

Davor habe ich natürlich den timer und das image auf Form1 getan.
Hilfe!!!

Gruß
Mica
Phantom1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 390



BeitragVerfasst: Di 03.02.04 00:52 
moment, ich seh grad das war ja ein anderer topic von dir, dort hatte ich eine seite gepostet mit einer Unit für die CPU-Last messung und die brauchst du tinyurl.com/77j2

diese adcpuusage.pas einfach in deine anwendung kopieren.