Функция GetWinType   

Функция 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

Функция 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 )
Hosted by uCoz