delphi - 如何从 Delphi 64 位应用程序 (XE5) 获得 CPU 速度?

标签 delphi 64-bit delphi-xe5

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

是否有从 Delphi 64 位中检索 CPU 速度的 native 方法?

最佳答案

如果您的平台是 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/

相关文章:

delphi - 如何使用TCharHelper?

delphi - 如何使用 TIdHTTP 停止(取消)下载

delphi - 在 Delphi 中对备忘录进行排序

c++ - 如何在 64 位版本的 Windows 中调用 SetWindowLong()?

c - fork 后重新创建死线程

android - 如何在 Delphi-XE5 Firemonkey 应用程序中关闭 android 应用程序?

android - XE5 Android TBitmap.LoadFromStream 在线程内失败

forms - Delphi应用程序表单在启动时显示而不是隐藏

delphi - 如何在打开模态表单后立即将其关闭?

python - matplotlib 绘图窗口不会出现