Autor |
Beitrag |
RFZ
      
Beiträge: 137
WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
|
Verfasst: 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
      
Beiträge: 149
Win XP, Win 2000
D6 PE, D7 Prof, D8 Prof
|
Verfasst: Do 08.01.04 15:33
|
|
RFZ 
      
Beiträge: 137
WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 390
|
Verfasst: 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:
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 CPULast: Array[0..80] Of Byte; public 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
|
Verfasst: Mo 02.02.04 14:38
Unter Win98 kann man die CPU Auslastung nicht korrekt auslesen. Das gibt das OS einfach nicht her.
|
|
RFZ 
      
Beiträge: 137
WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
|
Verfasst: 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
|
Verfasst: 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 
      
Beiträge: 137
WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
|
Verfasst: 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
|
Verfasst: 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
|
Verfasst: 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? 
|
|
RFZ 
      
Beiträge: 137
WinME, WinXP, Win2k*, Win98*, Win95*, Win3.11*, DOS* (*VMware)
D4 Prof
|
Verfasst: 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
|
Verfasst: Mo 02.02.04 20:30
@phantom1
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(3  : Undefinierter Bezeichner: 'CPULast'
-[Fehler] Unit1.pas(39): Undefinierter Bezeichner: 'GetCPUUsage'
-...
Was mache ich falsch?(Ich benutze Delphi 5)
Gruß
Mica
|
|
Phantom1
      
Beiträge: 390
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 390
|
Verfasst: 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.
|
|