delphi判断windows系统是64位还是32位

来源:互联网 发布:德拉蒙德格林数据 编辑:程序博客网 时间:2024/04/30 11:31
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   Result := False;  Kernel32Handle := GetModuleHandle('KERNEL32.DLL');  if Kernel32Handle = 0 then    Kernel32Handle := LoadLibrary('KERNEL32.DLL');  if Kernel32Handle <> 0 then  begin    IsWOW64Process := GetProcAddress(Kernel32Handle,'IsWow64Process');    //GetNativeSystemInfo函数从Windows XP开始才有,而IsWow64Process函数从Windows XP SP2以及Windows Server 2003 SP1开始才有。    //所以使用该函数前最好用GetProcAddress。    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;  end;end;