MAP ReFlex__OS(BYTE Extended=0),BYTE MODULE('') GetVersionEx(LONG),SIGNED,PASCAL,NAME('GetVersionExA'),PROC END END ReFlex__OS FUNCTION(BYTE Extended=0) ! ! If NOT "Extended" return 0 = Win9x/ME, 1 = NT, 2 = W2K/Whistler(XP) ! If "Extended" return 1 = Win95, 2 = Win98, 3 = NT3.51, 4 = NT4, 5 = W2K, 6 = ME, 7 = Whistler(XP) ! Returns 255 on error ! OSVersionInfo GROUP,PRE() InfoSize ULONG MajorVersion ULONG MinorVersion ULONG BuildNumber ULONG PlatformID ULONG CSDVersion STRING(128) END ! OS MajorVersion MinorVersion PlatformID ! ===================================================== ! Win95 4 0 1 ! Win98 4 >0 1 ! ME 4 90 1 ! NT3.51 3 51 2 ! NT4 4 0 2 ! W2K 5 0 2 ! Whistler(XP) 5 1 2 CODE CLEAR(OSVersionInfo) InfoSize = SIZE(OSVersionInfo) IF NOT GetVersionEx(ADDRESS(OSVersionInfo)) THEN RETURN(255). IF NOT Extended RETURN( CHOOSE(PlatformID = 1, 0, CHOOSE(PlatformID = 2, CHOOSE(MajorVersion < 5, 1, 2), 255)) ) ELSE IF MajorVersion = 4 AND MinorVersion = 90 RETURN(6) ELSIF MajorVersion = 5 AND MinorVersion = 1 RETURN(7) END RETURN( CHOOSE(PlatformID = 1, CHOOSE(MinorVersion = 0, 1, 2), CHOOSE(PlatformID = 2, MajorVersion, 255)) ) END