begin process at 2012 05 30 10:42:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

utiliser getfileversion


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

utiliser getfileversion

lundi 15 décembre 2003 à 10:05:58 | utiliser getfileversion

sitesref

j'ai eu beau chercher, je parviens pas à utiliser l'API GetFileVersion. J'ai été regarder sur le site de MS et dans le Platform SDK mais ils sont pas clairs du tout pour ça.

en fait, je voudrais une fonction qui marche comme ça:

String GetVer(String filename)
{
... // je suppose utiliser GetFileVersion mais comment ?
}

qui renverrait par exemple "2.3"

PS: j'aimerais que la réponse soit un exemple compréhensible en c++ et pas en un autre langage (comme deplhi par ex)

Merci

Nicolas Nachtergaele
DeepBlue Software
lundi 15 décembre 2003 à 10:37:35 | Re : utiliser getfileversion

radada

Toi t'a pas cherché avant de poster non??? lol :D; ça m'arrive aussi. J'ai posté une source qui fait ça puisque moi aussi j'ai galéré avec cette merde... Bon courage
http://www.cppfrance.com/code.aspx?ID=18340
mardi 16 décembre 2003 à 11:08:08 | Re : utiliser getfileversion

sitesref

merci mais j'avais déjà été voir ce code.

malheureusement y a des morceaux que je comprends pas trop

et surtout je vois pas dans quelle variable tu stockes les résultats (comme par ex le numéro de version) une fois que tu les as trouvés !!!

merci d'essayer d'expliquer un peu ton code à l'andouille que je suis :-)))

nn
DeepBlue Software
mardi 16 décembre 2003 à 11:52:04 | Re : utiliser getfileversion

radada

Ben c'est assez compliqué comme truc (merci Microsoft, comme d'hab ; ))
En gros, pour la partie qui t'interesse :
Avant de pouvoir récupérer les infos sur les fichiers, il faut que tu connaisse les paramêtres de langue du dit-fichier. C'est 2 chaines en hexa qui se suivent et tu les récupère via :

//on récupère les infos de langues et de version (voir msdn sur VerQueryValue)
l_bRetCode = VerQueryValue (l_pucVersionBlock, "\\VarFileInfo\\Translation", (LPVOID *)&l_pwVerInfo, &l_uiVersionLen);
if (l_bRetCode && (l_uiVersionLen > 0) && l_ptVerInfo != NULL)


Maintenant, pwVerInfo contient 2 morceaux en hexa qui correspondent aux infos de langue. On les mets dans un char[] pour ne plus s'emmerder maintenant qu'on les a....

// on concatène les infos langues sous forme de 2 chaines char en hexa
sprintf(l_cStartString, "\\StringFileInfo\\%04x%04x\\", l_pwVerInfo[0], l_pwVerInfo[1]);


Et maintenant en fait, il existe plein de champs sous la forme \StringFileInfo\\%04x%04x\\Nom_du_champs (voir MSDN) qui contiennent <> infos. Il suffit de les récupérer avec de nouveau un VerQueryValue en passant les paramêtres qui vont bien. Par exemple, pour le n° de vesion (dispo dans \\StringFileInfo\\%04x%04x\\FileVersion):

// on commence par la version du fichier
sprintf(l_pulLangageRef, "%sFileVersion", l_cStartString);
l_bRetCode = VerQueryValue (l_pucVersionBlock, l_pulLangageRef, (LPVOID *)&l_pcDllInfos, &l_uiVersionLen);
strncpy(p_bdDataArray->m_acFileVersion, l_pcDllInfos, l_uiVersionLen);
if (!( l_bRetCode && (l_uiVersionLen > 0) && (l_ptVerInfo != NULL)))
{
return l_ErrCode = BLE_INVALIDE_DLL_VERSION;
}


le N° est contenu dans l_pcDllInfos, et je fais une copie dans un char[] via un strncpy(dest, srce, len) :

strncpy(p_bdDataArray->m_acFileVersion, l_pcDllInfos, l_uiVersionLen);


J'espère que c'est un peu moins nébuleux comme ça ; ))


Cette discussion est classée dans : string, utiliser, exemple, getfileversion


Répondre à ce message

Sujets en rapport avec ce message

Groupe de controle [ par damien174 ] bonjour j'aurais voulu savoir si c'était possible d'utiliser des index ou autre truc dans ce genre la pour utiliser un seul nom d'un obget par exemple Comment utiliser des methodes privées ? [ par thomas59553 ] bonjour, j'ai un probleme dans une classe de conversion ... en voici un extrait :class Conversion{ private : string Nombre; string de c++ vers vb [ par ToasTy62 ] bonjour tlm!bon, g un gros probleme. j'ai créé une dll en c++ ke j'essaie d'utiliser en VB. j'arrive a passer un string de VB vers la dll C++, mé voil Alternative à la fonction strtok ? [ par chuckboy ] Bonjour je cherche une alternative a cette fonction car je trouve quelle n'est vraiment pas bien (disons pas adapté pour mon utilisation) En réalité j Sérialisation ?? [ par najla1986 ] Quelqu'un peut il me donner un exemple rapide sur la sérialisation ? je ne comprend pas très bien le principe, faut il enregistrer des bytes par byte utiliser RegFlushKey [ par gamemonde ] Bonjour je voulais savoir si RegFlushKey permettais de changer automatiquement la base de registre du systeme exemple changer la cle Window de HKCU/Co Dossiers [ par Mitch986 ] Bonjour !Voilà, ma demande est assez précise... Je souhaiterai , pour un chemin d'accès donné, lister tous les dossiers (et non les fichiers) contenus Questions Manip Dossiers [ par Mitch986 ] Bonjour !Voilà, ma demande est assez précise... Je souhait Question méthode transform en C++ [ par 0ColdZero0 ] Bonjour, je sais utiliser la fonction transform quand on reçoit une string avec seulement un mot, mais comment l'utiliser quand on reçoit une string c CTreeCtrl [ par floozbug ] yhoupiYop : Bonjour, je suis en train de me bagarrer avec un arbre sur mon projet de BTS et je peine pas mal à l'utiliser. je voulais juste savoir si


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,140 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales