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

C++ Discussion :

detecter la version de Windows


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2002
    Messages : 48
    Points : 44
    Points
    44
    Par défaut detecter la version de Windows
    Bonjour,

    je souhaite detecter la version de win sous la quelle roule mon appli.

    Mon appli est en C++. J'utilise Pwlib comme librairie.

    Il y a peut etre un moyen a partir du registre, mais je ne l'ai pas trouvé.

    Bart

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Fonction de l'API Win32: GetVersionEx().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    373
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 373
    Points : 512
    Points
    512
    Par défaut code code..
    voila une petite fonction toute préte tirée de la boite à outils..

    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
    int CMainFrame::GetOSSystem() 
    { 
        OSVERSIONINFOEX osvi; 
        BOOL bOsVersionInfoEx; 
     
       // Try calling GetVersionEx using the OSVERSIONINFOEX structure. 
       // 
       // If that fails, try using the OSVERSIONINFO structure. 
       ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); 
       osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); 
     
       if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osvi)) ) 
       { 
          // If OSVERSIONINFOEX doesn't work, try OSVERSIONINFO. 
          osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO); 
          if (! GetVersionEx ( (OSVERSIONINFO *) &osvi) ) 
             return  -1; 
       } 
       if(osvi.dwPlatformId==VER_PLATFORM_WIN32_NT) 
       {      
             if ( osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1 ) 
                return 4; 
          return   3; 
       }            
      if(osvi.dwPlatformId==VER_PLATFORM_WIN32s) return 0; 
      if(osvi.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS) 
      { 
        if(osvi.dwMinorVersion==0) return 1; 
        else if(osvi.dwMinorVersion>0) return 2; 
      } 
       return  -1; 
    }
    le pourquoi du comment..
    le but est de savoir sous quel os on se trouve, hors, getversionex n'est pas toujours disponible, il faut donc se rabattre sur de vieilles fonctions.
    le résultat retourné varie de -1 pour erreur à 0->5 pour les versions de win.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu devrais utiliser au moins une Enum pour les résultats retournés, plutôt que des valeurs hard-codées. Surtout que celles-ci ne correspondent pas au numéro de version de Windows...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [Shell]Détecter la version de java dans un script
    Par sc_wizard29 dans le forum Général Java
    Réponses: 4
    Dernier message: 01/07/2005, 10h00
  2. Version de Windows pour Delphi 8
    Par alainvh dans le forum EDI
    Réponses: 8
    Dernier message: 22/06/2004, 11h37
  3. Connaître la version de windows?
    Par Age Piranha dans le forum Windows
    Réponses: 3
    Dernier message: 12/04/2004, 21h09
  4. Version de Windows dans Visual Studio !!!
    Par Jasmine dans le forum MFC
    Réponses: 3
    Dernier message: 18/03/2004, 17h40
  5. 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

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