![]() |
Prozessor Auslastung
hi,
gibt es eigentlich die möglichkeit durch eine funktion oder ähnliches, die prozessor Auslastung eines windows oder linux rechners herauszufinden? vielen dank.. |
Re: Prozessor Auslastung
Und auch hier hilft die Suche weiter:
![]() Aber für beide Systeme einen Code wirst du nicht finden, da du die Schnittstelle nehmen musst, die dir das System bietet. |
Re: Prozessor Auslastung
danke
|
Re: Prozessor Auslastung
suche: cpu auslastung
= Keine Beiträge entsprechen Deinen Kriterien. |
Re: Prozessor Auslastung
Zitat:
Dann öffnet sich die DP-Suche und da gibts viele Treffer ;-) André |
Re: Prozessor Auslastung
Liste der Anhänge anzeigen (Anzahl: 3)
hi,
gerüchte sind echt nicht mein ding.. aber vielleicht liegts ja an opera, werd mal mit dem IE probieren.. [edit=Admin]Bilder vom BMP-Format ins JPG-Format konvertiert. Mfg, Daniel[/edit] |
Re: Prozessor Auslastung
|
Re: Prozessor Auslastung
hi,
also im IE klappts auch nicht - werds mal unter nem anderen beutzer versuchen.. vielen dank für den link |
Re: Prozessor Auslastung
Hi...
Lag zufällig auf meiner Platte, hatte ich mal bei Torry rausgesucht und für nützlich befunden. Getestet unter W2K.
Delphi-Quellcode:
regards
// Beispielcode für CPU-Last-Anzeige. Gefunden bei Torry.
// Neues Form erstellen und den Quelltext komplett ersetzen. // Button1 und Label1 aufs Form legen und OnClick für den // Button verbinden. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TPDWord = ^DWORD; TSystem_Basic_Information = packed record dwUnknown1: DWORD; uKeMaximumIncrement: ULONG; uPageSize: ULONG; uMmNumberOfPhysicalPages: ULONG; uMmLowestPhysicalPage: ULONG; uMmHighestPhysicalPage: ULONG; uAllocationGranularity: ULONG; pLowestUserAddress: Pointer; pMmHighestUserAddress: Pointer; uKeActiveProcessors: ULONG; bKeNumberProcessors: byte; bUnknown2: byte; wUnknown3: word; end; type TSystem_Performance_Information = packed record liIdleTime: LARGE_INTEGER; {LARGE_INTEGER} dwSpare: array[0..75] of DWORD; end; type TSystem_Time_Information = packed record liKeBootTime: LARGE_INTEGER; liKeSystemTime: LARGE_INTEGER; liExpTimeZoneBias: LARGE_INTEGER; uCurrentTimeZoneId: ULONG; dwReserved: DWORD; end; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; const SystemBasicInformation = 0; SystemPerformanceInformation = 2; SystemTimeInformation = 3; var Form1: TForm1; NtQuerySystemInformation: function(infoClass: DWORD; buffer: Pointer; bufSize: DWORD; returnSize: TPDword): DWORD; stdcall = nil; liOldIdleTime: LARGE_INTEGER = (); liOldSystemTime: LARGE_INTEGER = (); implementation {$R *.dfm} function Li2Double(x: LARGE_INTEGER): Double; begin Result := x.HighPart * 4.294967296E9 + x.LowPart end; procedure GetCPUUsage; var SysBaseInfo: TSystem_Basic_Information; SysPerfInfo: TSystem_Performance_Information; SysTimeInfo: TSystem_Time_Information; status: Longint; {long} dbSystemTime: Double; dbIdleTime: Double; bLoopAborted : boolean; begin if @NtQuerySystemInformation = nil then NtQuerySystemInformation := GetProcAddress(GetModuleHandle('ntdll.dll'), 'NtQuerySystemInformation'); // get number of processors in the system status := NtQuerySystemInformation(SystemBasicInformation, @SysBaseInfo, SizeOf(SysBaseInfo), nil); if status <> 0 then Exit; // Show some information with SysBaseInfo do begin ShowMessage( Format('uKeMaximumIncrement: %d'#13'uPageSize: %d'#13+ 'uMmNumberOfPhysicalPages: %d'+#13+'uMmLowestPhysicalPage: %d'+#13+ 'uMmHighestPhysicalPage: %d'+#13+'uAllocationGranularity: %d'#13+ 'uKeActiveProcessors: %d'#13'bKeNumberProcessors: %d', [uKeMaximumIncrement, uPageSize, uMmNumberOfPhysicalPages, uMmLowestPhysicalPage, uMmHighestPhysicalPage, uAllocationGranularity, uKeActiveProcessors, bKeNumberProcessors])); end; bLoopAborted := False; while not bLoopAborted do begin // get new system time status := NtQuerySystemInformation(SystemTimeInformation, @SysTimeInfo, SizeOf(SysTimeInfo), 0); if status <> 0 then Exit; // get new CPU's idle time status := NtQuerySystemInformation(SystemPerformanceInformation, @SysPerfInfo, SizeOf(SysPerfInfo), nil); if status <> 0 then Exit; // if it's a first call - skip it if (liOldIdleTime.QuadPart <> 0) then begin // CurrentValue = NewValue - OldValue dbIdleTime := Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime); dbSystemTime := Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime); // CurrentCpuIdle = IdleTime / SystemTime dbIdleTime := dbIdleTime / dbSystemTime; // CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors dbIdleTime := 100.0 - dbIdleTime * 100.0 / SysBaseInfo.bKeNumberProcessors + 0.5; // Show Percentage Form1.Label1.Caption := FormatFloat('CPU Usage: 0.0 %',dbIdleTime); Application.ProcessMessages; // Abort if user pressed ESC or Application is terminated bLoopAborted := (GetKeyState(VK_ESCAPE) and 128 = 128) or Application.Terminated; end; // store new CPU's idle and system time liOldIdleTime := SysPerfInfo.liIdleTime; liOldSystemTime := SysTimeInfo.liKeSystemTime; // wait one second Sleep(1000); end; end; procedure TForm1.Button1Click(Sender: TObject); begin GetCPUUsage end; end. Toni |
Re: Prozessor Auslastung
jopp geht, aber der frisst ganz schön viel speicher
|
Re: Prozessor Auslastung
Eigentlich könnte man doch die WHILE-Schleife und das Sleep rausnehmen :?:
Delphi-Quellcode:
wenns falsch ist, seid mir bitte nicht böse :) hab kein Delphi zum Testen auf meinem Internet-PC installiert
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TPDWord = ^DWORD; TSystem_Basic_Information = packed record dwUnknown1: DWORD; uKeMaximumIncrement: ULONG; uPageSize: ULONG; uMmNumberOfPhysicalPages: ULONG; uMmLowestPhysicalPage: ULONG; uMmHighestPhysicalPage: ULONG; uAllocationGranularity: ULONG; pLowestUserAddress: Pointer; pMmHighestUserAddress: Pointer; uKeActiveProcessors: ULONG; bKeNumberProcessors: byte; bUnknown2: byte; wUnknown3: word; end; type TSystem_Performance_Information = packed record liIdleTime: LARGE_INTEGER; {LARGE_INTEGER} dwSpare: array[0..75] of DWORD; end; type TSystem_Time_Information = packed record liKeBootTime: LARGE_INTEGER; liKeSystemTime: LARGE_INTEGER; liExpTimeZoneBias: LARGE_INTEGER; uCurrentTimeZoneId: ULONG; dwReserved: DWORD; end; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; const SystemBasicInformation = 0; SystemPerformanceInformation = 2; SystemTimeInformation = 3; var Form1: TForm1; NtQuerySystemInformation: function(infoClass: DWORD; buffer: Pointer; bufSize: DWORD; returnSize: TPDword): DWORD; stdcall = nil; liOldIdleTime: LARGE_INTEGER = (); liOldSystemTime: LARGE_INTEGER = (); implementation {$R *.dfm} function Li2Double(x: LARGE_INTEGER): Double; begin Result := x.HighPart * 4.294967296E9 + x.LowPart end; procedure GetCPUUsage; var SysBaseInfo: TSystem_Basic_Information; SysPerfInfo: TSystem_Performance_Information; SysTimeInfo: TSystem_Time_Information; status: Longint; {long} dbSystemTime: Double; dbIdleTime: Double; bLoopAborted : boolean; begin if @NtQuerySystemInformation = nil then NtQuerySystemInformation := GetProcAddress(GetModuleHandle('ntdll.dll'), 'NtQuerySystemInformation'); // get number of processors in the system status := NtQuerySystemInformation(SystemBasicInformation, @SysBaseInfo, SizeOf(SysBaseInfo), nil); if status <> 0 then Exit; // Show some information with SysBaseInfo do begin ShowMessage( Format('uKeMaximumIncrement: %d'#13'uPageSize: %d'#13+ 'uMmNumberOfPhysicalPages: %d'+#13+'uMmLowestPhysicalPage: %d'+#13+ 'uMmHighestPhysicalPage: %d'+#13+'uAllocationGranularity: %d'#13+ 'uKeActiveProcessors: %d'#13'bKeNumberProcessors: %d', [uKeMaximumIncrement, uPageSize, uMmNumberOfPhysicalPages, uMmLowestPhysicalPage, uMmHighestPhysicalPage, uAllocationGranularity, uKeActiveProcessors, bKeNumberProcessors])); end; bLoopAborted := False; // get new system time status := NtQuerySystemInformation(SystemTimeInformation, @SysTimeInfo, SizeOf(SysTimeInfo), 0); if status <> 0 then Exit; // get new CPU's idle time status := NtQuerySystemInformation(SystemPerformanceInformation, @SysPerfInfo, SizeOf(SysPerfInfo), nil); if status <> 0 then Exit; // if it's a first call - skip it if (liOldIdleTime.QuadPart <> 0) then begin // CurrentValue = NewValue - OldValue dbIdleTime := Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime); dbSystemTime := Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime); // CurrentCpuIdle = IdleTime / SystemTime dbIdleTime := dbIdleTime / dbSystemTime; // CurrentCpuUsage% = 100 - (CurrentCpuIdle * 100) / NumberOfProcessors dbIdleTime := 100.0 - dbIdleTime * 100.0 / SysBaseInfo.bKeNumberProcessors + 0.5; // Show Percentage Form1.Label1.Caption := FormatFloat('CPU Usage: 0.0 %',dbIdleTime); Application.ProcessMessages; // Abort if user pressed ESC or Application is terminated bLoopAborted := (GetKeyState(VK_ESCAPE) and 128 = 128) or Application.Terminated; end; // store new CPU's idle and system time liOldIdleTime := SysPerfInfo.liIdleTime; liOldSystemTime := SysTimeInfo.liKeSystemTime; end; procedure TForm1.Button1Click(Sender: TObject); begin GetCPUUsage end; end. |
Re: Prozessor Auslastung
Vielleicht etwas OT aber...
@tobias2207: du hast ja jetzt fast 3 MB Bilddateien auf dem DP-Server abgeladen. Der Nutzinhalt ist (jetzt nachdem alles gekärt ist) gleich Null. Also ich mache mir da immer etwas Sorgen, dass die DP zugemüllt wird. Ich reduziere Screenshots immer auf 256 Farben und speichere dann als GIF-Image; das schont die Platte und das Internet. |
Re: Prozessor Auslastung
screenshots werden doch automatisch nach einem Jahr oder so rausgenommen? ich hab mal einen alten Artikel gelesen und da haben die Links zum Anhang nich mehr funktioniert.
|
Re: Prozessor Auslastung
also ich bekomme bei der suche 102 ergebnisse!
...und wegen der screenshots! es gibt auch usr ohne dsl oder schnelleres! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 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