'===========================================================================
' Subject: Get Windows Version                Date: 12-22-02 (  :  )       
'  Author: Fred Buffington                    Code: PBWIN,PBDLL            
'  Origin: oasys@sbcglobal.net              Packet: PBDLL.ABC
'===========================================================================
'Fred Buffington
'Get Windows Version
'Pbwin

$COMPILE EXE 
$INCLUDE "win32api.inc" 
'These constants enumerate the different possible Windows OS platforms 
%WinUnknown      = 0 
%Win95           = 1 
%Win98           = 2 
%WinME           = 3 
%WinNT           = 4 
%Win2K           = 5 
%WinXP           = 6 
%WinDotNetServer = 7 
DECLARE FUNCTION GetWindowsVersion() AS LONG 
 
FUNCTION PBMAIN() AS LONG 
   lResult&=GetWindowsVersion 
   SELECT CASE lResult& 
        CASE %WinUnknown 
              op$="Unknown" 
        CASE %Win95 
              op$="Windows 95" 
        CASE %Win98 
              op$="Windows 98" 
        CASE %WinME 
              op$="Windows ME" 
        CASE %WinNT 
              op$="Windows NT" 
        CASE %Win2K 
              op$="Windows 2K" 
        CASE %WinXP 
              op$="Windows XP" 
        CASE %WinDotNetServer 
              op$="WindotNet Server" 
   END SELECT 
   IF op$<>"" THEN MSGBOX op$,,"the OS is:" 
END FUNCTION 
 
FUNCTION GetWindowsVersion() AS LONG 
   'Original function by Scott Turchin.  Modified by Bernard Ertl. 
   'Original posting can be found here: 
   'http://www.powerbasic.com/support/forums/Forum4/HTML/002310.html 
 
   LOCAL osinfo   AS OSVERSIONINFO 
 
   osinfo.dwOsVersionInfoSize = SIZEOF(osinfo) 
 
   IF ISFALSE GetVersionEx( osinfo) THEN EXIT FUNCTION ' Function = %WinUnknown 
 
   IF osinfo.dwPlatformId = %VER_PLATFORM_WIN32_NT THEN 
      SELECT CASE osinfo.dwMajorVersion 
         CASE < 5 
              FUNCTION = %WinNT 
         CASE 5 
              SELECT CASE osinfo.dwMinorVersion 
                 CASE 0 
                     FUNCTION = %Win2K 
                 CASE 1 
                     FUNCTION = %WinXP 
                 CASE 2 
                     FUNCTION = %WinDotNetServer 
            END SELECT 
      END SELECT 
   ELSEIF osinfo.dwPlatformId = %VER_PLATFORM_WIN32_WINDOWS THEN 
      SELECT CASE osinfo.dwMinorVersion 
           CASE < 10 
               FUNCTION = %Win95 
           CASE 10 
               FUNCTION = %Win98 
           CASE 90 
               FUNCTION = %WinME 
      END SELECT 
   END IF 
 
END FUNCTION 
