Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Windows API / MS.NET Framework API (https://www.delphipraxis.net/20-library-windows-api-ms-net-framework-api/)
-   -   Delphi CPU Frequenz ermitteln mit CallNTPowerInformation (https://www.delphipraxis.net/63244-cpu-frequenz-ermitteln-mit-callntpowerinformation.html)

Luckie 15. Feb 2006 20:50


CPU Frequenz ermitteln mit CallNTPowerInformation
 
Delphi-Quellcode:
{
  Author : Michael Puff - [url]http://www.michael-puff.de[/url]
  Date   : 2006-02-15
  License : PUBLIC DOMAIN
}

type
  PROCESSOR_POWER_INFORMATION = packed record
    Number: Cardinal;
    MaxMhz: Cardinal;
    CurrentMhz: Cardinal;
    MhzLimit: Cardinal;
    MaxIdleState: Cardinal;
    CurrentIdleState: Cardinal;
  end;
  PPROCESSOR_POWER_INFORMATION = ^PROCESSOR_POWER_INFORMATION;

  TCPUFrequency = packed record
    CurrentMhz: Cardinal;
    MaxMhz: Cardinal;
  end;

function CallNtPowerInformation(InformationLevel: DWORD; InPutBuffer: Pointer; InputBufferSize: ULONG; OutPutBuffer:
  Pointer; OutPutBufferSize: ULONG): DWORD; stdcall; external 'PowrProf.dll';

function GetCPUFrequency(var CPUFrequency: TCPUFrequency): DWORD;
var
  ppi: PROCESSOR_POWER_INFORMATION;
  err: DWORD;
begin
  ZeroMemory(@ppi, sizeof(PROCESSOR_POWER_INFORMATION));
  err := CallNTPowerInformation(11, nil, 0, @ppi, sizeof(PROCESSOR_POWER_INFORMATION));
  if err = 0 then
  begin
    CPUFrequency.CurrentMhz := ppi.CurrentMhz;
    CPUFrequency.MaxMhz := ppi.MaxMhz;
  end;
  result := err;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  CPUFrequency: TCPUFrequency;
  err: DWORD;
  s: String;
begin
  ZeroMemory(@CPUFrequency, sizeof(TCPUFrequency));
  err := GetCPUFrequency(CPUFrequency);
  if err = 0 then
  begin
    s := 'Current frequency: '+IntToStr(CPUFrequency.CurrentMhz)+' MHz'+#13#10;
    s := s + 'Max frequency: '+IntToStr(CPUFrequency.MaxMhz)+' MHz';
    ShowMessage(s);
  end
  else
    ShowMessage(SysErrorMessage(err));
end;
Stichworte: CPU Frequenz, Taktfrequenz

[edit=Chakotay1308]Klassifizierung angepasst/hinzugefügt. Mfg, Chakotay1308[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:00 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