![]() |
CPU Temperatur und CPU Auslastung auslesen
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 |
Re: CPU Temperatur und CPU Auslastung auslesen
Delphi-Quellcode:
CPUUssage liefert die CPU Auslastung zurück!
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. |
Re: CPU Temperatur und CPU Auslastung auslesen
Das mit der Temperatur kannst du unter XP wohl vergessen!
|
Re: CPU Temperatur und CPU Auslastung auslesen
Mit ein paar dll`s und sys Dateien kannst du die CPU Temp auslesen. Habe ich als Projekt erst gemacht.
|
Re: CPU Temperatur und CPU Auslastung auslesen
Dann schick mal was! Mich würde es auch interessieren! ;)
|
Re: CPU Temperatur und CPU Auslastung auslesen
Schau dir mal diesen Thread an, da solltest du alles finden was du benötigst, sonst frag mich einfach
![]() |
Re: CPU Temperatur und CPU Auslastung auslesen
Bekomme immer die Nachricht:
Could not open DriverLINX driver. |
Re: CPU Temperatur und CPU Auslastung auslesen
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? |
Re: CPU Temperatur und CPU Auslastung auslesen
wieso gibts jetzt 2 threads auf einmal die mit cpu usage auslesen zu tun haben ?
-> torry -> mitec system information -> cpu usag |
Re: CPU Temperatur und CPU Auslastung auslesen
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 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