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

Langage Delphi Discussion :

Win32MajorVersion avec Delphi 7


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 31
    Par défaut Win32MajorVersion avec Delphi 7
    Je crois avoir lu tout ce qui a été écrit dans le forum sur "comment reconnaitre la version de windows"...

    Sauf que j'ai un résultat que je ne m'explique pas !
    J'ai un ordi sous XP et un autre Sous W7

    Sur les deux quand j'interroge Win32MajorVersion je récupère le même résultat !
    Major version "5" alors que sur W7 selon vos dires je devrais récupérer "6"

    Avez-vous une idée ? Une solution ?
    Cela tient-il au fait que je travaille encore avec Delphi 7 ?
    ( désolé mais je n'ai plus les moyens de suivre les releases et comme cela semblemarcher propre sous W7.... )

  2. #2
    Membre expérimenté
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Par défaut
    Citation Envoyé par HPulluard Voir le message
    J'ai un ordi sous XP et un autre Sous W7
    Sur les deux quand j'interroge Win32MajorVersion je récupère le même résultat !
    Major version "5" alors que sur W7 selon vos dires je devrais récupérer "6"
    Avez-vous une idée ? Une solution ?
    Cela tient-il au fait que je travaille encore avec Delphi 7 ?
    En effet 5 en XP et 6 et Vista/W7/2K8, surement lié a D7. Sous BDS2006 on ne pouvait pas détecter les 'Windows Server 2008'
    en XE c'est Ok en utilisant l'API GetVersionEx() (pas retesté si plus simple en XE2)
    Sinon le lien MS :
    http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx


    Exemple de code (voir également le lien MS):
    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
     
    CASE Win32MajorVersion OF
        3: OS:='Windows NT 3.51';
        4: CASE Win32MinorVersion OF
             0:  OS:='Windows 95';
             2:  OS:='Windows NT 4.0';
             10: OS:='Windows 98';
             90: OS:='Windows ME';
           END;
        5: CASE Win32MinorVersion OF
             0:  OS:='Windows 2000';
             1:  OS:='Windows XP';
             2: IF GetSystemMetrics(SM_SERVERR2)= 0
                  THEN OS:='Windows Server 2003'
                  ELSE OS:='Windows Server 2003 R2'
           END;
        6:BEGIN
            CASE Win32MinorVersion OF
             0: IF Version_Etendue.wProductType=VER_NT_WORKSTATION
                  THEN OS:='Windows Vista'
                  ELSE OS:='Windows Server 2008';
             1: IF Version_Etendue.wProductType=VER_NT_WORKSTATION
                  THEN OS:='Windows 7'
                  ELSE OS:='Windows Server 2008 R2';
            END
          END
      ELSE
        OS:='Windows '+IntToStr(Win32MajorVersion)+'.'+IntToStr(Win32MinorVersion);
      END;
      IF Win32CSDVersion = ''
        THEN Result:=SysUtils.Format('%s (Build %d)', [OS, Win32BuildNumber])
        ELSE Result:=SysUtils.Format('%s %s (Build %d)', [OS, Win32CSDVersion, Win32BuildNumber]);

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Question con : Tu lancerais pas ton application en XP Mode ?
    Sous D7, je l'ai testé et ça fonctionnait jusqu'à Server 2008 R2 !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre expérimenté
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Question con : Tu lancerais pas ton application en XP Mode ?
    Sous D7, je l'ai testé et ça fonctionnait jusqu'à Server 2008 R2 !
    Nop.
    Tu avais jusque 2K8 R2 sans utiliser l'API GetVersionEx() ?

  5. #5
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    Sans GetVersionEx ?
    Tu voulais plutôt dire sans un appel explicite de GetVersionEx avec un OSVERSIONINFOEX
    car cela utilise aussi GetVersionEx pour remplir les constantes de SysUtils !
    Mais cela ne récupère que les informations du OSVERSIONINFO, il nous manque les versions étendues indiquant le type d'OS fourni par OSVERSIONINFOEX


    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
    procedure InitPlatformId;
    var
      OSVersionInfo: TOSVersionInfo;
    begin
      OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
      if GetVersionEx(OSVersionInfo) then
        with OSVersionInfo do
        begin
          Win32Platform := dwPlatformId;
          Win32MajorVersion := dwMajorVersion;
          Win32MinorVersion := dwMinorVersion;
          Win32BuildNumber := dwBuildNumber;
          Win32CSDVersion := szCSDVersion;
        end;
    end;
    Depuis Delphi 6, j'utilise CheckWin32Version
    Lorsque j'ai besoin de savoir si c'est un Serveur ou une Station, j’appelle manuellement GetVersionEx avec un OSVERSIONINFOEX au lieu d'un OSVERSIONINFO comme dans la FAQ : Comment obtenir la version de Windows ?
    Il faudrait d'ailleurs mettre à jour la FAQ pour 6.0 et 6.1 !

    Sinon la question du XP Mode, c'était pour HPulluard
    Lui c'est carrément un problème de 5 au lieu de 6, ton problème de D2006, c'était justement un wProductType est différent de VER_NT_WORKSTATION
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre expérimenté
    Avatar de Eric.H
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 220
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Sans GetVersionEx ?
    Tu voulais plutôt dire sans un appel explicite de GetVersionEx avec un OSVERSIONINFOEX
    Oui bien sur, j'avais pas mis tout le code, j'aime laisser les gens chercher un peu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      FUNCTION Version_Etendue:TOSVersionInfoEx; 
      BEGIN
        ZeroMemory(@Result,SizeOf(Result));
        Result.dwOSVersionInfoSize := SizeOf(Result);
        GetVersionEx(Result);
      END;
    Depuis Delphi 6, j'utilise CheckWin32Version
    Ouais mais je vois pas comment avec CheckWin32Version() tu peux faire la différence entre un W7=6.1 et un W2008R2=6.1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function CheckWin32Version(AMajor: Integer; AMinor: Integer = 0): Boolean;
    begin
      Result := (Win32MajorVersion > AMajor) or
                ((Win32MajorVersion = AMajor) and
                 (Win32MinorVersion >= AMinor));
    end;
    Note : le but, pour nous, n'étant pas de connaitre la version de Windows mais plus d'indiquer quel type de Windows.

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

Discussions similaires

  1. Récupérer le code HTML d'une page avec Delphi 7
    Par PsyKroPack dans le forum Web & réseau
    Réponses: 5
    Dernier message: 06/02/2003, 21h56
  2. [Choix] Quel SGBD avec delphi et kylix
    Par djmcg dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 16/01/2003, 12h24
  3. Programmation WEB avec delphi
    Par mayoguy dans le forum Web & réseau
    Réponses: 4
    Dernier message: 20/08/2002, 19h03
  4. Réponses: 5
    Dernier message: 08/07/2002, 16h22
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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