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

DirectX Discussion :

Connaitre la VRAIE version du DirectX installé


Sujet :

DirectX

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 34
    Points : 37
    Points
    37
    Par défaut Connaitre la VRAIE version du DirectX installé
    Bonjour tout le monde,

    Je cesse un instant de me taper la calebasse sur le bord du bureau pour venir vous poster ce qui suit...

    Chargé de faire une petite application, je voudrais récupérer et afficher la version du DirectX installé sur le PC hôte...

    Jusqu'ici, pas de souci particulier, et vu le nombre de routines chargées de faire ça que l'on trouve sur le Net, il n'y a que l'embarras du choix...

    Je me suis donc dis, que le mieux était de me fier aux informations inscrites dans la BDR du PC sur lequel tourne l'application afin de récupérer cette version du DirectX... Aussitot dit, aussitôt fait

    Alors que je passe la version beta à quelques personnes qui veulent bien me tester le bazard, l'un d'entre eux - particulièrement observateur - me fait remarquer qu'il y a une petite divergence entre le numéro de version que mon application retourne comme version DirectX installée et celle renvoyée par l'utilitaire DXDiag !!!

    Je fais ni une, ni deux, je revoie ma copie i et je compare cette info avec celle de DXDiag et là, en effet je constate aussi qu'entre les infos de versions inscrites dans les BDR et celles renvoyées par DXDiag, il n'y a pas du tout d'entente!!!

    pour exemple sortie de l'un de mes PC sous W7 64b :

    Version du DirectX installé et inscrite dans la BDR du PC:

    clé: HKLM\SOFTWARE\Microsoft\DirectX\
    Installed Version : 00 00 00 00 09 00 00 00 00
    Version : 4.09.00.0904

    En comparant ces infos avec n'importe quel tableau de correspondance, on constate que Version : 4.09.00.0904 = DirectX version 9.0c

    Or un appel à DXDiag vous affiche (toujours sur le même PC bien entendu:

    Version DirectX 11 !!!!

    PS: en effectuant les mêmes opérations sur un PC portable sous Vista 32b, j'ai exactement les mêmes infos... A croire que le DXDiag ne connait que sa dernière version quelque soit le PC sur lequel il trouve un DirectX... Et à ce propos, j'aimerais aussi savoir où DXDiag va donc chercher les infos de version qu'il nous affiche, car visiblement ce n'est pas dans la BDR du PC...

    Là je pense que l'un des deux nous fait du gros foutage de g....

    Pour l'instant, je pose donc le crayon en attendant qu'une bonne âme me dise quelle est la version VRAIE et qu'il faut donc prendre en compte: celle inscrite dans la BDR du PC ou celle retournée par DXDiag ???

    ...Et moi qui croyait le monde informatique précis, sans ambiguïté... Va me falloir sérieusement revoir mon jugement

    Bonne continuation et A+++

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 395
    Points : 5 009
    Points
    5 009
    Par défaut
    bonsoir, sachant que par exemple sous 7 tu as dx 9, 10 et 11 de dispo ; qu'est ce que tu veux vraiment récupérer, parce que ton pavé est loin d'être clair.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 806
    Points
    219 806
    Billets dans le blog
    125
    Par défaut
    Bonjour,

    L'utilisation de la base de registre me semble très "casse gueule" pour un tel truc. D'autant plus que je serai étonné qu'il n'y ai pas une autre méthode en créant un contexte DirectX (voir la MSDN et les fonctions liés à DirectX).

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 34
    Points : 37
    Points
    37
    Par défaut
    Soir tout le monde

    stardeath:

    je vais essayer d'éclaircir le sujet...

    sachant que par exemple sous 7 tu as dx 9, 10 et 11 de dispo ; qu'est ce que tu veux vraiment récupérer
    Ben justement la version précisément installée sur le PC en question !... Dans la BDR de Windows il n'existe qu'une seule entrée (ou clé, valeur si tu veux) qui renseigne sur le numéro de version DirectX couramment installé...

    Dans mes cas précis (car c'est le même scénario sur tous mes PC), dans mes BDR il est inscrit un numéro de version (allez disons la version 4.09.00.0904)...

    Il suffit de se rendre ici:

    http://fr.wikipedia.org/wiki/DirectX

    aller au bas de cette page pour lire écrit noir sur blanc qu'un tel numéro de version correspond à un DirectX 9.0c

    Bien... Si à présent tu appelles sur le même PC - bien entendu - l'utilitaire DxDiag, tu lis aussi noir sur blanc que la version installée est du 11.0 (et ceci quelque soit le Windows: Vista ou W7 )

    Comme je me dis que logiquement un même objet ne peux pas avoir deux identités différentes en même temps, je me pose donc la question - tout aussi logique - qui des deux (BdR ou DxDiag) me dit la vérité ???

    Pour donner un autre ordre d'idée, Windows porte un numéro de version, que tu l'affiches avec ver en mode console ou avec tout autre utilitaire, tu auras toujours qu'une version Windows 6.1.XXXX est toujours du W7 et pas autre chose! Apparemment ce principe ne semble pas s'appliquer à DirectX


    LittleWhite:

    C'est juste pour récupérer une info... Il n'est pas dans mes intentions de me servir de DirectX pour faire quoi que ce soit d'autre.

    Voilà, bonne continuation et A+++

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 899
    Points : 219 806
    Points
    219 806
    Billets dans le blog
    125
    Par défaut
    Sinon, peut être que cela pourrait marcher en regardant la version des DLL installées sur le système (logiquement, installées dans le dossier système Windows).

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 395
    Points : 5 009
    Points
    5 009
    Par défaut
    même avis que LittleWhite, tu cherches la dll et tu récupères les infos la concernant.

    (je pense d'ailleurs que les anciennes versions de dxdiag font ça, vu qu'il y avait un onglet recensant les dll et les infos associées, je ne vois plus cet onglet dans le dxdiag de ma machine au bureau, donc je sais pas comment il fait)

    ps : voici un sample trouvé sur le net et corrigé (normalement) pour afficher la même chose que l'explorer :

    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
    void PrintFileVersion( TCHAR *pszFilePath )
    {
    	DWORD				dwSize				= 0;
    	BYTE				*pbVersionInfo		= NULL;
    	VS_FIXEDFILEINFO	*pFileInfo			= NULL;
    	UINT				puLenFileInfo		= 0;
     
    	dwSize = GetFileVersionInfoSize( pszFilePath, NULL );
    	if( dwSize == 0 )
    	{
    		printf( "Error in GetFileVersionInfoSize: %d\n", GetLastError() );
    		return;
    	}
     
    	pbVersionInfo = new BYTE[ dwSize ];
     
    	if( !GetFileVersionInfo( pszFilePath, 0, dwSize, pbVersionInfo ) )
    	{
    		printf( "Error in GetFileVersionInfo: %d\n", GetLastError() );
    		delete[] pbVersionInfo;
    		return;
    	}
     
    	if( !VerQueryValue( pbVersionInfo, TEXT( "\\" ), (LPVOID*) &pFileInfo, &puLenFileInfo ) )
    	{
    		printf( "Error in VerQueryValue: %d\n", GetLastError() );
    		delete[] pbVersionInfo;
    		return;
    	}
     
    	printf
    	( "File Version: %d.%d.%d.%d\n",
    		( pFileInfo->dwFileVersionMS >> 16 ) & 0xffff,
    		( pFileInfo->dwFileVersionMS >>  0 ) & 0xffff,
    		( pFileInfo->dwFileVersionLS >> 16 ) & 0xffff,
    		( pFileInfo->dwFileVersionLS >>  0 ) & 0xffff
    	);
     
    	printf
    	( "Product Version: %d.%d.%d.%d\n",
    		( pFileInfo->dwProductVersionMS >> 16 ) & 0xffff,
    		( pFileInfo->dwProductVersionMS >>  0 ) & 0xffff,
    		( pFileInfo->dwProductVersionLS >> 16 ) & 0xffff,
    		( pFileInfo->dwProductVersionLS >>  0 ) & 0xffff
    	);
    }

  7. #7
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Citation Envoyé par zano972 Voir le message
    ... Et à ce propos, j'aimerais aussi savoir où DXDiag va donc chercher les infos de version qu'il nous affiche, car visiblement ce n'est pas dans la BDR du PC...
    Dans le Microsoft DirectX SDK (June 2010), tu as un utilitaire (DxDiagReport.exe) qui montre comment DxDiag va chercher les informations. En plus, il y a le code source de cet utilitaire (...\Samples\C++\Misc\DxDiagReport\).

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 34
    Points : 37
    Points
    37
    Par défaut
    Re,

    OK... Et un grand merci à tous (toutes) pour vos infos

    Je vais me pencher tour à tour sur les solutions de moldavi, LittleWhite et de stardeath mais je pense que quelque chose de satisfaisant en sortira.

    Pour moi c'est bon, problème résolu.

    Bonne continuation et A+++

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

Discussions similaires

  1. comment connaitre la version du Moss installé
    Par gikose dans le forum SharePoint
    Réponses: 2
    Dernier message: 01/04/2009, 10h58
  2. Installation et version de DirectX
    Par MABB dans le forum Ogre
    Réponses: 0
    Dernier message: 01/12/2008, 20h30
  3. [DirectX] Installer la version 8.1
    Par fred59 dans le forum Ordinateurs
    Réponses: 2
    Dernier message: 12/12/2006, 20h43
  4. version de directx ?
    Par gargle dans le forum DirectX
    Réponses: 5
    Dernier message: 04/06/2004, 14h42
  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