Функция GetWinType возвращает тип операционной системы
Использует функцию Windows API32 GetVersionEx, прототип которой:
GetVersionEx(LONG),name('GetVersionExA'),BOOL,PASCAL,PROC,RAW
Кроме этого используется функция GetRegistry.
Прототип функции: GetWinType Function(),UShort
Возвращает: 0 - неизвестный тип
1 - Win32
2 - Windows NT
3 - Windows 2000
GetWindType FUNCTION
!===========================================
! Информация о версии Windows:
VER_PLATFORM_WIN32_NT EQUATE(2)
VER_PLATFORM_WIN32_WINDOWS EQUATE(1)
VER_PLATFORM_WIN32S EQUATE(0)
OVI GROUP, pre( OVI )
OVI:dwOSVersionInfoSize DWORD
OVI:dwMajorVersion DWORD
OVI:dwMinorVersion DWORD
OVI:dwBuildNumber DWORD
OVI:dwPlatformId DWORD
OVI:szCSDVersion CHAR,DIM(128)
END
loc:WindowsPath String( 120 )
loc:OSType UShort( 0 )
CODE
OVI:dwOSVersionInfoSize = Size(OVI)
if GetVersionEx( Address(OVI) ) = 0
! Message('Unable to determine Windows version','Error!')
loc:OSType = 0
else
Case OVI:dwPlatformId
Of VER_PLATFORM_WIN32S
loc:OSType = 0
! Message('Unable to run under Win32s - get a real OS','Error!')
of VER_PLATFORM_WIN32_WINDOWS
loc:OSType = 1
! loc:WindowsPath = lower(GetRegistry('Software\Microsoft\Windows\CurrentVersion','SystemRoot','',HKEY_LOCAL_MACHINE))
of VER_PLATFORM_WIN32_NT
if OVI:dwMajorVersion = 5
loc:OSType = 3 ! Windows 2000
else
loc:OSType = 2 ! Windows NT
.
! loc:WindowsPath = lower(GetRegistry('Software\Microsoft\Windows NT\CurrentVersion','SystemRoot','',HKEY_LOCAL_MACHINE))
else
! Message('Unable to determine which version of Windows you have','Error!')
loc:OSType = 0
.
.
return( loc:OSType )
Функция GetWinPath возвращает базовый каталог операционной системы
Использует функцию Windows API32 GetVersionEx, прототип которой:
GetVersionEx(LONG),name('GetVersionExA'),BOOL,PASCAL,PROC,RAW
Кроме этого используется функция GetRegistry. Прототип функции: GetWinPath Function(),String
GetWinPath FUNCTION
!===========================================
! Информация о версии Windows:
VER_PLATFORM_WIN32_NT EQUATE(2)
VER_PLATFORM_WIN32_WINDOWS EQUATE(1)
VER_PLATFORM_WIN32S EQUATE(0)
OVI GROUP, pre( OVI )
OVI:dwOSVersionInfoSize DWORD
OVI:dwMajorVersion DWORD
OVI:dwMinorVersion DWORD
OVI:dwBuildNumber DWORD
OVI:dwPlatformId DWORD
OVI:szCSDVersion CHAR,DIM(128)
END
loc:WindowsPath String( 120 )
loc:OSType UShort( 0 )
CODE
loc:WindowsPath = ''
OVI:dwOSVersionInfoSize = Size(OVI)
if GetVersionEx( Address(OVI) ) = 0
! Message('Unable to determine Windows version','Error!')
loc:OSType = 0
else
Case OVI:dwPlatformId
Of VER_PLATFORM_WIN32S
loc:OSType = 0
! Message('Unable to run under Win32s - get a real OS','Error!')
of VER_PLATFORM_WIN32_WINDOWS
loc:OSType = 1
loc:WindowsPath = lower(GetRegistry('Software\Microsoft\Windows\CurrentVersion\Setup\WinBootDir','devdir','',HKEY_LOCAL_MACHINE))
of VER_PLATFORM_WIN32_NT
if OVI:dwMajorVersion = 5
loc:OSType = 3 ! Windows 2000
else
loc:OSType = 2 ! Windows NT
.
loc:WindowsPath = lower(GetRegistry('Software\Microsoft\Windows NT\CurrentVersion','PathName','',HKEY_LOCAL_MACHINE))
! loc:WindowsPath = lower(GetRegistry('Software\Microsoft\Windows NT\CurrentVersion','SystemRoot','',HKEY_LOCAL_MACHINE))
else
! Message('Unable to determine which version of Windows you have','Error!')
loc:OSType = 0
.
.
return( loc:WindowsPath )