unit LibSystemConst;
interface
uses
Windows, SysUtils,
LibProcessInfo, LibOSVersion;
var
__OverVista : Boolean;
__OverXP : Boolean;
__Over2K : Boolean;
__64Bit : Boolean; // 2009.09.20 JAZZ
__OverWindows7 : Boolean; // 2010.07.12 JAZZ
__OverWindows8 : Boolean; // 2015.06.18 JAZZ
__OverWindows10 : Boolean; // 2020.01.20 JAZZ
__InstanceFile : String; // Wow64 에서는 Redirect된 경로가 들어가니 주의할 것
__InstancePath : String;
procedure __Initialize;
var
MJ, MN, BL : DWORD;
DRV : String;
Arch : WORD;
begin
__InstanceFile := GetFileNameFromHInstance(HInstance);
__InstancePath := ExtractFilePath(__InstanceFile);
// 프로그램 등록 정보에서 호환성 체크를 찍고 들어오는 경우
// 호환 OS의 정보가 들어오니 주의하도록...
if not OS_Version(MJ, MN, BL) then begin
System.HALT(1);
Exit;
end;
__OverWindows10 := (MJ >= 10); // 2020.01.20 JAZZ (Windows Server 2016)
__OverWindows8 := (MJ > 6) or ((MJ = 6) and (MN >= 2)); // 2015.06.18 JAZZ
__OverWindows7 := (MJ > 6) or ((MJ = 6) and (MN >= 1)); // 2010.07.12 JAZZ
__OverVista := (MJ >= 6);
__OverXP := (MJ > 5) or ((MJ = 5) and (MN >= 1));
__Over2K := (MJ >= 5);
// 2009.09.20 JAZZ
// IA64에서는 실행되지 않고 x64에서는 에뮬레이션 모드로 실행된다.
Arch := OS_GetProcessorArch();
__64Bit := Arch in [ PROCESSOR_ARCHITECTURE_AMD64, PROCESSOR_ARCHITECTURE_IA64 ];
end;
initialization
__Initialize();