我们正在使用Delphi XE5将应用程序套件迁移到64位。在“关于”框中,我们显示CPU速度。我们当前使用的例程是32位汇编,因此无法在64位以下编译。

有没有一种本机的方法可以从Delphi 64位中检索CPU速度?

最佳答案

如果您的平台是Windows,并且想要公布的CPU速度,则只需在注册表中检查HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0\~MHz DWORD值:

program SO21757165;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  Registry,
  Windows,
  System.SysUtils;

function GetCPUSpeed : String;

var
  Reg : TRegistry;

begin
 Reg := TRegistry.Create(KEY_QUERY_VALUE);
 try
  Reg.RootKey := HKEY_LOCAL_MACHINE;
  if Reg.OpenKeyReadOnly('HARDWARE\DESCRIPTION\System\CentralProcessor\0') then
   begin
    Result := Format('CPU Speed is %dMHz', [Reg.ReadInteger('~MHz')]);
    Reg.CloseKey;
   end;
 finally
  Reg.Free;
 end;
end;

begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
    Writeln(GetCPUSpeed);
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.


编辑

将上面的代码片段重写为一个可编译的示例。此示例已经在XE7中进行了验证,并且可以在32位和64位环境中使用(已启用UAC)

关于delphi - 如何从Delphi 64位应用程序(XE5)获得CPU速度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21757165/

10-13 08:13