Delphi Base

WindSon

导航

Delphi 判断操作系统是32位或是64位

function IsWin64: Boolean;
var
  Kernel32Handle: THandle;
  IsWow64Process: function(Handle: Windows.THandle; var Res: Windows.BOOL): Windows.BOOL;
stdcall;
GetNativeSystemInfo :
  procedure(var lpSystemInfo: TSystemInfo); stdcall; isWoW64 :BOOL;SystemInfo :  TSystemInfo;
  const
    PROCESSOR_ARCHITECTURE_AMD64 = 9;
    PROCESSOR_ARCHITECTURE_IA64 = 6;
  begin
    Kernel32Handle := GetModuleHandle('KERNEL32.DLL');
    if Kernel32Handle = 0 then
      Kernel32Handle := LoadLibrary('KERNEL32.DLL');
    if Kernel32Handle <> 0 then
    begin
      IsWow64Process := GetProcAddress(Kernel32Handle, 'IsWow64Process');
      GetNativeSystemInfo := GetProcAddress(Kernel32Handle, 'GetNativeSystemInfo');
      if Assigned(IsWow64Process) then
      begin
        IsWow64Process(GetCurrentProcess, isWoW64);
        Result := isWoW64 and Assigned(GetNativeSystemInfo);
        if Result then
        begin
          GetNativeSystemInfo(SystemInfo);
          Result := (SystemInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64) or (SystemInfo.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_IA64);
        end;
      end
      else
        Result := False;
    end
    else
      Result := False;
  end; 


procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsWin64 then
  begin
    showmessage('64位');
  end else
  begin
    showmessage('32位');

  end;
end;

 

posted on 2020-03-16 22:14  windsonvip  阅读(1011)  评论(0编辑  收藏  举报