[VB.Net] Récupérer la version de windows?

Récupérer la version de windows? [VB.Net] - Programmation

Marsh Posté le 18-05-2001 à 04:00:22    

Voila j'ai essayé pas mal de chose provenant de VB6, mais je n'ai pas réussi a récupérer la version de windows (95/98/NT/2000)
 
J'ai essayé ça (mais ça ne marche pas):
 
Dans module
    Declare Function GetVersionEx Lib "kernel32"  Alias "GetVersionExA" (ByVal lpVersionInformation As  OSVERSIONINFO) As Long
    Structure OSVERSIONINFO
        Dim dwOSVersionInfoSize As Long
        Dim dwMajorVersion As Long
        Dim dwMinorVersion As Long
        Dim dwBuildNumber As Long
        Dim dwPlatformId As Long
        Dim szCSDVersion As String
    End Structure
    Public MonOs As OSVERSIONINFO
----------------
Dans form
        Dim L As Long
        Dim Msg As String
        MonOs.dwOSVersionInfoSize = CDbl(Len(MonOs.ToString))
        L = GetVersionEx(MonOs)
        Msg = ""
        Select Case MonOs.dwPlatformId
            Case VER_PLATFORM_WIN32_NT
                Msg = Msg & "Windows NT "
            Case VER_PLATFORM_WIN32_WINDOWS
                Msg = Msg & "Windows 95 / 98"
            Case VER_PLATFORM_WIN32s
                Msg = Msg & "Win32S sous Windows 3.x (!)"
        End Select
        Msg = Msg & "Version " & Str(MonOs.dwMajorVersion) & "."
        Msg = Msg & Str(MonOs.dwMinorVersion) & "."
        Msg = Msg & Str(MonOs.dwBuildNumber) & "."
        Msg = Msg & MonOs.szCSDVersion
        MsgBox(Msg)
---------------
 
Si vous avez mieux merci.

 

[edit]--Message édité par dom01--[/edit]


---------------
WRT45Gv2
Reply

Marsh Posté le 18-05-2001 à 04:00:22   

Reply

Marsh Posté le 18-05-2001 à 11:22:27    

Il me semble qu'il faudrait enlever "ByVal" dans le passage du paramètre à la fonction de l'api Win32. En effet dans la définition de la fonction GetVersionEx, la structure lpVersionInformation est indiquée comme in/out.

 

[edit]--Message édité par Guru--[/edit]

Reply

Marsh Posté le 18-05-2001 à 15:30:23    

non c'est bien byVal, d'ailleurs si j'essaye de l'enlever ou de mettre byRef, il me remet automatiquement byVal,
Merci quand meme.


---------------
WRT45Gv2
Reply

Marsh Posté le 18-05-2001 à 15:46:12    

D'un point de vue logique cela parait plus que douteux de passer une structure qui va être modifiée par une fonction externe en ByVal. En effet dans ce cas une copie de la structure est crée et passée a la dite fonction. La structure définie dans la procédure appelante ne sera dans un tel cas pas modifiée et tu ne disposera pas de l'information retournée par la fonction.
 
Afin de vérifier que le comportement a priori normal de VB se retrouve en VB.Net, j'ai fait un test avec ton code et lors de l'execution avec ByVal cela plante mais fonctionne correctement avec ByRef. Le seul problème étant que si la plate forme est correctement identifiée, les numéros de version (majeur / mineur) et de build sont a 0.

Reply

Marsh Posté le 18-05-2001 à 16:30:33    

Comment tu fais pour mettre byRef puisque moi il me met directement byVal?
 
Merci Ô Guru


---------------
WRT45Gv2
Reply

Marsh Posté le 18-05-2001 à 16:58:18    

Si tu ne mets rien il ajoute automatiquement ByVal car c'est le mode de transmission de paramètres par défaut de VB. Tu tapes simplement ByRef avant le premier paramètre.

Reply

Marsh Posté le 18-05-2001 à 16:59:19    

Heu un copier coller t'interesse ...
 
Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
     
    Structure OSVERSIONINFO
        Dim dwOSVersionInfoSize As Long
        Dim dwMajorVersion As Long
        Dim dwMinorVersion As Long
        Dim dwBuildNumber As Long
        Dim dwPlatformId As Long
        Dim szCSDVersion As String
    End Structure
     
    Public MonOs As OSVERSIONINFO


---------------
Ce qui vaut la peine d'être fait vaut la peine d'être bien fait
Reply

Marsh Posté le 18-05-2001 à 17:04:52    

Le code présenté ci dessus est de la proprieté de Guru  :D  
 
Allez en cette fin de semaine, un peu d'humour ne fait de mal à personne.


---------------
Ce qui vaut la peine d'être fait vaut la peine d'être bien fait
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed