AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Prozessor Auslastung

Ein Thema von tobias2207 · begonnen am 24. Jun 2005 · letzter Beitrag vom 6. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2   
tobias2207

Registriert seit: 5. Feb 2005
Ort: berlin
44 Beiträge
 
#1

Prozessor Auslastung

  Alt 24. Jun 2005, 09:37
hi,

gibt es eigentlich die möglichkeit durch eine funktion oder ähnliches, die prozessor Auslastung eines windows oder linux rechners herauszufinden?

vielen dank..
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Prozessor Auslastung

  Alt 24. Jun 2005, 10:12
Und auch hier hilft die Suche weiter: Hier im Forum suchencpu auslastung.

Aber für beide Systeme einen Code wirst du nicht finden, da du die Schnittstelle nehmen musst, die dir das System bietet.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
tobias2207

Registriert seit: 5. Feb 2005
Ort: berlin
44 Beiträge
 
#3

Re: Prozessor Auslastung

  Alt 24. Jun 2005, 10:59
danke
  Mit Zitat antworten Zitat
tobias2207

Registriert seit: 5. Feb 2005
Ort: berlin
44 Beiträge
 
#4

Re: Prozessor Auslastung

  Alt 24. Jun 2005, 12:48
suche: cpu auslastung

= Keine Beiträge entsprechen Deinen Kriterien.
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Prozessor Auslastung

  Alt 24. Jun 2005, 12:51
Zitat von tobias2207:
suche: cpu auslastung

= Keine Beiträge entsprechen Deinen Kriterien.
Das halte ich für ein Gerücht. Markiere beide Wörter und geh auf den 1. Button unten rechts (Button mit Lupe und DP-Symbol).

Dann öffnet sich die DP-Suche und da gibts viele Treffer

André
André
  Mit Zitat antworten Zitat
tobias2207

Registriert seit: 5. Feb 2005
Ort: berlin
44 Beiträge
 
#6

Re: Prozessor Auslastung

  Alt 24. Jun 2005, 13:06
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]
Miniaturansicht angehängter Grafiken
3_208.jpg   2_169.jpg   1_726.jpg  
  Mit Zitat antworten Zitat
DirectFromHell

Registriert seit: 14. Mär 2005
14 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Prozessor Auslastung

  Alt 24. Jun 2005, 13:12
hmm ich kriege da Ergebnisse
Naja schau mal hier
"Take A Look To The Sky Just Before You Die,
It's The Last Time You Will!"
- James Hetfield
  Mit Zitat antworten Zitat
tobias2207

Registriert seit: 5. Feb 2005
Ort: berlin
44 Beiträge
 
#8

Re: Prozessor Auslastung

  Alt 24. Jun 2005, 13:23
hi,

also im IE klappts auch nicht - werds mal unter nem anderen beutzer versuchen..

vielen dank für den link
  Mit Zitat antworten Zitat
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#9

Re: Prozessor Auslastung

  Alt 24. Jun 2005, 14:30
Hi...

Lag zufällig auf meiner Platte, hatte ich mal bei Torry rausgesucht und für nützlich befunden. Getestet unter W2K.

Delphi-Quellcode:
// 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.
regards

Toni
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
150gozilla

Registriert seit: 1. Sep 2005
Ort: Taunusstein
116 Beiträge
 
Delphi 5 Professional
 
#10

Re: Prozessor Auslastung

  Alt 6. Okt 2005, 09:32
jopp geht, aber der frisst ganz schön viel speicher
Chris
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:13 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