프로그래밍 초보 탈출

Libraries/Delphi Library

[System] System Const Library

째즈토끼 2022. 6. 17. 18:51
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();

'Libraries > Delphi Library' 카테고리의 다른 글

[System] Registry Library  (0) 2022.06.17
[System] UAC (User Account Control) Library  (0) 2022.06.17
[System] OS Version Library  (0) 2022.06.17
[Protocol] Modbus RTU Packet Library  (0) 2022.06.17
[System] Execute Library 2  (0) 2022.06.17