AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi CPU Temperatur und CPU Auslastung auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

CPU Temperatur und CPU Auslastung auslesen

Ein Thema von VirusXP · begonnen am 29. Dez 2003 · letzter Beitrag vom 2. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von VirusXP
VirusXP

Registriert seit: 29. Dez 2003
Ort: Ingolstadt
33 Beiträge
 
Delphi 2007 Professional
 
#1

CPU Temperatur und CPU Auslastung auslesen

  Alt 29. Dez 2003, 17:46
Hi Leute,
ich bin auf der Suche nach Lösungsvorschlägen zu meinem Problem (s.oben).
Ich hab zwar schon massig im Forum gefunden, kann aber nichts damit anfangen , da ich noch ein
Anfänger auf diesem Gebiet bin. Wäre froh wenn jemand mir das genau erklären oder mir ein
gut dokumentiertes Programm oder eine Unit geben könnte.

Mfg VirusXP
Für die einen ist Windows nur ein Betriebssystem, für die anderen ist es der größte Virus der Welt.
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#2

Re: CPU Temperatur und CPU Auslastung auslesen

  Alt 29. Dez 2003, 22:43
Delphi-Quellcode:
unit CPU;

interface

function CPUUssage:single;

implementation

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

const
  SystemBasicInformation = 0;
  SystemPerformanceInformation = 2;
  SystemTimeInformation = 3;

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;

var
  NtQuerySystemInformation: function(infoClass: DWORD; buffer: Pointer; bufSize: DWORD; returnSize: TPDword): DWORD; stdcall = nil;
  liOldIdleTime: LARGE_INTEGER = ();
  liOldSystemTime: LARGE_INTEGER = ();
  CPUTime:single;

function CPUUssage:single;
begin
result:=CPUTime;
end;

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');
  status := NtQuerySystemInformation(SystemBasicInformation, @SysBaseInfo, SizeOf(SysBaseInfo), nil);
  if status <> 0 then Exit;
  bLoopAborted := False;
  while not bLoopAborted do
  begin
    status := NtQuerySystemInformation(SystemTimeInformation, @SysTimeInfo, SizeOf(SysTimeInfo), 0);
    if status <> 0 then Exit;
    status := NtQuerySystemInformation(SystemPerformanceInformation, @SysPerfInfo, SizeOf(SysPerfInfo), nil);
    if status <> 0 then Exit;
    if (liOldIdleTime.QuadPart <> 0) then
    begin
      dbIdleTime := Li2Double(SysPerfInfo.liIdleTime) - Li2Double(liOldIdleTime);
      dbSystemTime := Li2Double(SysTimeInfo.liKeSystemTime) - Li2Double(liOldSystemTime);
      dbIdleTime := dbIdleTime / dbSystemTime;
      dbIdleTime := 100.0 - dbIdleTime * 100.0 / SysBaseInfo.bKeNumberProcessors + 0.5;
      CPUTime:=dbIdleTime;
      Application.ProcessMessages;
      bLoopAborted := (GetKeyState(VK_ESCAPE) and 128 = 128) or Application.Terminated;
    end;
    liOldIdleTime := SysPerfInfo.liIdleTime;
    liOldSystemTime := SysTimeInfo.liKeSystemTime;
    Sleep(1000);
  end;
end;

procedure Start;
var
  ThreadID: DWORD;
  ThreadHandle: THandle;
begin
  ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine(@GetCPUUsage),
    nil, 0, ThreadID);
  if ThreadHandle<>0 then CloseHandle(ThreadHandle);
end;

initialization
  Start;

end.
CPUUssage liefert die CPU Auslastung zurück!
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#3

Re: CPU Temperatur und CPU Auslastung auslesen

  Alt 29. Dez 2003, 22:45
Das mit der Temperatur kannst du unter XP wohl vergessen!
  Mit Zitat antworten Zitat
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#4

Re: CPU Temperatur und CPU Auslastung auslesen

  Alt 29. Dez 2003, 23:01
Mit ein paar dll`s und sys Dateien kannst du die CPU Temp auslesen. Habe ich als Projekt erst gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#5

Re: CPU Temperatur und CPU Auslastung auslesen

  Alt 29. Dez 2003, 23:06
Dann schick mal was! Mich würde es auch interessieren!
  Mit Zitat antworten Zitat
kurtm1

Registriert seit: 12. Dez 2003
348 Beiträge
 
#6

Re: CPU Temperatur und CPU Auslastung auslesen

  Alt 29. Dez 2003, 23:12
Schau dir mal diesen Thread an, da solltest du alles finden was du benötigst, sonst frag mich einfach

http://www.delphipraxis.net/internal...ct.php?t=15519
  Mit Zitat antworten Zitat
Benutzerbild von SleepyMaster
SleepyMaster

Registriert seit: 18. Mai 2003
634 Beiträge
 
#7

Re: CPU Temperatur und CPU Auslastung auslesen

  Alt 29. Dez 2003, 23:27
Bekomme immer die Nachricht:
Could not open DriverLINX driver.
  Mit Zitat antworten Zitat
J4N

Registriert seit: 2. Okt 2004
Ort: Stuttgart
6 Beiträge
 
#8

Re: CPU Temperatur und CPU Auslastung auslesen

  Alt 2. Okt 2004, 15:42
hm, ich würde gerne eine Konsolenanwendung machen, die in einer einfachen Zeile die Auslastung ausgibt. Warum? Weil ich die Ausgabe dann in PHP einlesen kann, was ich gerne für eine Statusseite nutzen will. Ich hab schon AdCPUUsage (oder wie das hieß) und diese Unit hier probiert, doch beide liefern mir komische Zahlen (AdCPUUsage bringt entweder 100 oder 0 und diese hier immer 0).
Als ich AdCPUUsage mit einer normalen Anwendung probiert habe und auf Knopfdruck auslesen hab lassen, ging es. Ich brauche das Tool für Windows 2K. Kann mir vielleicht einer helfen?
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#9

Re: CPU Temperatur und CPU Auslastung auslesen

  Alt 2. Okt 2004, 15:49
wieso gibts jetzt 2 threads auf einmal die mit cpu usage auslesen zu tun haben ?

-> torry -> mitec system information -> cpu usag
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
J4N

Registriert seit: 2. Okt 2004
Ort: Stuttgart
6 Beiträge
 
#10

Re: CPU Temperatur und CPU Auslastung auslesen

  Alt 2. Okt 2004, 15:55
Aalso...Ich bin hier der anständige Programmierer^^
Ich sollte für den "asd" so ein Minitool machen. Doch nur hatte ich keine Ahnung wie ich die Auslastung auslese. Ich hab ihm diese Adresse gegeben und ihm gesagt, er könne ja auch suchen. Nur hat er, anstatt zu suchen eben gepostet, weil er keine Lust hatte und möglichst schnell eine Antwort wollte. Ich hab dann eben hier, nachdem ich nichts gefunden hatte, das zu klappen scheint, mal "richtig" mit weiteren Angaben gepostet. Also braucht man den sinnlosen Post von ihm nicht mehr.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:39 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