我们正在使用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/