Как определить версию Windows?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Как определить версию Windows?

Сообщение Alexander N. Samarin » 06.03.2005 (Вс) 13:44

Нужно в программе отличить Win98, Win2000 и WinXP

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.03.2005 (Вс) 13:52

Код: Выделить всё
Private Declare Function GetVersion Lib "kernel32" () As Long

Public Function GetWinVersion() As String
    Dim Ver As Long, WinVer As Long
    Ver = GetVersion()
    WinVer = Ver And &HFFFF&
    'retrieve the windows version
    GetWinVersion = Format((WinVer Mod 256) + ((WinVer \ 256) / 100), "Fixed")
End Function
Private Sub Form_Load()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    MsgBox "Windows version: " + GetWinVersion
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 06.03.2005 (Вс) 18:48

На 3-х компьютерах протестировал, результаты таковы:
Win98SE = 4.10
Win2k pro = 5.00
WinXP pro = 5.01

А если существуют
Win 95
Win 98
Win 98 OSR 1
Win 98 OSR 2
Win NT 3
Win NT 4
Win ME
то какие у них будут версии?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.03.2005 (Вс) 19:19

Alexander N. Samarin писал(а):На 3-х компьютерах протестировал, результаты таковы:
Win98SE = 4.10
Win2k pro = 5.00
WinXP pro = 5.01

А если существуют
Win 95
Win 98
Win 98 OSR 1
Win 98 OSR 2
Win NT 3
Win NT 4
Win ME
то какие у них будут версии?

Win95: 4.00
WinNT3: 3.10, 3.50, 3.51 (не уверен)
WinNT4: 4.00 (не уверен)
WinME: 4.90

Если это важно, то могу проверить на WinNT3; а вот WinNT4 у меня нету, так что придётся попросить кого-нибудь другого ;-)

PS: Win98OSR не было, имхо ты путаешь с Win95.
Изображение

Sirik
Perspicaz
Perspicaz
Аватара пользователя
 
Сообщения: 2280
Зарегистрирован: 19.02.2004 (Чт) 16:09
Откуда: Бердичев, Украина

Сообщение Sirik » 07.03.2005 (Пн) 9:51

Код: Выделить всё
Public Function getVersion() As Long
'Значения:
'  0-Error
'  1-Win 95
'  2-Win 98
'  3-Win Me
'  4-Win NT 3.51
'  5-Win NT 4.0
'  6-Win 2k
'  7-Win XP
    Dim osinfo As OSVERSIONINFO
    Dim retvalue As Integer
    Dim Res As Long
   
    osinfo.dwOSVersionInfoSize = 148
    osinfo.szCSDVersion = Space$(128)
    retvalue = GetVersionExA(osinfo)
   
    With osinfo
        Select Case .dwPlatformId
            Case 1
                Select Case .dwMinorVersion
                    Case 0
                        Res = 1
                    Case 10
                        Res = 2
                    Case 90
                        Res = 3
                End Select
            Case 2
                Select Case .dwMajorVersion
                    Case 3
                        Res = 4
                    Case 4
                        Res = 5
                    Case 5
                        If .dwMinorVersion = 0 Then
                            Res = 6
                        Else
                            Res = 7
                        End If
                End Select
            Case Else
               Res = 0
        End Select
    End With
    getVersion = Res
End Function

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 07.03.2005 (Пн) 20:09

Большое спасибо, хотя сам навалял что-то похожее 8)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 68

    TopList  
cron