IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Déterminer la version de Windows


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 71
    Par défaut Déterminer la version de Windows
    Bonjour à toutes et à tous,

    J'utilise Visual Basic 2010 Express pour bricoler un peu quelques trucs à mon modeste niveau et, malgré quelques recherches, je n'arrive pas à trouver de code intéressant pour déterminer la version de Windows utilisée sur le poste d'où serait lancée mon exécutable, de Windows 2000 à Windows 7.

    J'ai tenté d'adapter ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFOEX) As Integer
     
    Private Const VER_PLATFORM_WIN32_WINDOWS = 1
    Private Const VER_PLATFORM_WIN32_NT = 2
     
    'wProductType
    Private Const VER_NT_WORKSTATION = 1 'Windows Vista, Windows XP Professional, Windows XP Home Edition, or Windows 2000 Professional
    Private Const VER_NT_DOMAIN_CONTROLLER = 2 'Controleur de domaine sous Windows Serveur 2008,2003 ou 2000
    Private Const VER_NT_SERVER = 3 'Windows Serveur 2008 , 2003 or 2000
     
     
    Private Type OSVERSIONINFOEX
       dwOSVersionInfoSize As Long
       dwMajorVersion As Long
       dwMinorVersion As Long
       dwBuildNumber As Long
       dwPlatformId As Long
       szCSDVersion As String * 128
       wServicePackMajor As Integer
       wServicePackMinor As Integer
       wSuiteMask As Integer
       wProductType As Byte
       wReserved As Byte
    End Type
     
    Public Function VersionWindows(ByRef sp As String) As String
     
        Dim os As OSVERSIONINFOEX
     
        os.dwOSVersionInfoSize = Len(os)
        GetVersionExA os
        sp = ""
     
        With os
            Select Case .dwPlatformId
                Case VER_PLATFORM_WIN32_WINDOWS
                    Select Case .dwMinorVersion
                        Case 0
                            VersionWindows = "95"
                        Case 10
                            VersionWindows = "98"
                        Case 90
                            VersionWindows = "Me"
                    End Select
                Case VER_PLATFORM_WIN32_NT
                    Select Case .dwMajorVersion
                        Case 3
                            VersionWindows = "NT 3.51"
                        Case 4
                            VersionWindows = "NT 4.0"
                        Case 5
                            If .dwMinorVersion = 0 Then
                                VersionWindows = "2000"
                            Else
                                VersionWindows = "XP"
                            End If
                        Case 6
                            If .wProductType = VER_NT_WORKSTATION Then
                                 VersionWindows = "Vista"
                            Else
                                VersionWindows = "Windows Server 2008"
                            End If
     
     
                    End Select
            End Select
     
            If InStr(.szCSDVersion, Chr(0)) > 0 Then
                sp = Left(.szCSDVersion, InStr(.szCSDVersion, Chr(0)) - 1)
            End If
        End With
     
    End Function
    Mais ce code est issu d'une FAQ VB6, et par exemple "Type" n'est plus utilisable en VB.NET, en tous les cas dans la version de VB 2010 que j'ai téléchargée. Il faut lui préférer l'élément Structure. Du coup je modifie le type de cette manière, afin de pouvoir compiler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Structure OSVERSIONINFOEX
       Dim dwOSVersionInfoSize As Long
       Dim dwMajorVersion As Long
       Dim dwMinorVersion As Long
       Dim dwBuildNumber As Long
       Dim dwPlatformId As Long
       Dim szCSDVersion As String * 128
       Dim wServicePackMajor As Integer
       Dim wServicePackMinor As Integer
       Dim wSuiteMask As Integer
       Dim wProductType As Byte
       Dim wReserved As Byte
    End Structure
    Mais d'une je ne sais pas "traduire" en Structure la déclaration String*128, qui n'est pas acceptée à la compilation, et de deux, même si je ne déclare pas cette variable, j'obtiens une erreur de compilation plus tard, à l'exécution de la ligne GetVersionExA(os).

    Est-il possible d'adapter le code pour une exécution en VB.NET ? Ou quelles sont les alternatives existantes ? A ce jour je n'ai rien trouvé de très clair (pour moi) sur le sujet...

    Merci d'avance pour votre aide

    Bonne journée

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 71
    Par défaut
    Ha oui en effet, ça marche au poil...Pourquoi faire simple quand on peut faire compliqué lol

    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/02/2009, 19h05
  2. Connaître la version de windows?
    Par Age Piranha dans le forum Windows
    Réponses: 3
    Dernier message: 12/04/2004, 21h09
  3. Version de Windows dans Visual Studio !!!
    Par Jasmine dans le forum MFC
    Réponses: 3
    Dernier message: 18/03/2004, 17h40
  4. Appli devant tourner sous différentes versions de Windows?
    Par AnneOlga dans le forum C++Builder
    Réponses: 4
    Dernier message: 12/11/2003, 10h48
  5. déterminer la version de Winsock installée
    Par BlueX_scf dans le forum Web & réseau
    Réponses: 7
    Dernier message: 24/02/2003, 10h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo