Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2544 connectés 

  FORUM HardWare.fr
  Programmation

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°32815
dom01
Posté le 18-05-2001 à 04:00:22  profilanswer
 

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
mood
Publicité
Posté le 18-05-2001 à 04:00:22  profilanswer
 

n°32886
Guru
Posté le 18-05-2001 à 11:22:27  profilanswer
 

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]

n°33022
dom01
Posté le 18-05-2001 à 15:30:23  profilanswer
 

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
n°33035
Guru
Posté le 18-05-2001 à 15:46:12  profilanswer
 

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.

n°33071
dom01
Posté le 18-05-2001 à 16:30:33  profilanswer
 

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


---------------
WRT45Gv2
n°33096
Guru
Posté le 18-05-2001 à 16:58:18  profilanswer
 

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.

n°33097
nabab
I'm blogging this.
Posté le 18-05-2001 à 16:59:19  profilanswer
 

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
n°33100
nabab
I'm blogging this.
Posté le 18-05-2001 à 17:04:52  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

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

 

Sujets relatifs
Serial de Pdflib 4 version BetaJAVA: comment récupérer des infos système? (MAC, RAM,...)
[ORACLE] Récupérer un modèle de données.quelqu'un fait de la prog WINDOWS en C++
Lien vers un répertoire sous windows 2000[GTK] Recuperer le nom du radio button actif a partir d'une GList
[ASP] [HELP] récupérer le session.id dans le global.asa ???[visual . NET] remplir une datagrid!!!
C++ et interface graphique pour windows (OWL)Apache sous Windows Me
Plus de sujets relatifs à : [VB.Net] Récupérer la version de windows?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)