Quels arguments êtes-vous censés donner à l’appel de l’API Windows VerQueryValue

Je comprends que le premier argument doit être le résultat de GetFileVersionInfo ().

Le troisième et le quasortingème sont les tampons cibles et la taille

Quel est le deuxième argument, lpSubBlock?

Merci d’avance

Lorsque vous affichez les informations de version via l’éditeur de ressources, vous remarquerez peut-être qu’il existe une section initiale avec FILEVERSION, PRODUCTVERISON etc., puis un ou plusieurs blocs contenant des parameters spécifiques à la langue.

VS_VERSION_INFO VERSIONINFO FILEVERSION 5,0,0,0 PRODUCTVERSION 5,0,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "SsortingngFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "CompanyName", "" VALUE "FileVersion", "5, 0, 0, 0" VALUE "ProductName", "" VALUE "ProductVersion", "5, 0, 0, 0" END BLOCK "000004b0" BEGIN VALUE "CompanyName", "" VALUE "FileVersion", "5, 0, 0, 0" VALUE "ProductName", "" VALUE "ProductVersion", "5, 0, 0, 0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x0, 1200, 0x409, 1200 END END 

Pour obtenir un VS_FIXEDFILEINFO avec l’utilisation des détails non spécifiques à la langue

 VS_FIXEDFILEINFO *versionInfo; PUINT versionInfoSize; VerQueryValue(buffer.get(), TEXT("\\"), (void**) &versionInfo, &versionInfoSize)) 

Pour savoir quelles langues sont sockets en charge

 Var *translationsInfo; PUINT transaltionInfoSize; VerQueryValue(buffer.get(), TEXT("\\VarFileInfo\\Translation"), (void**) &translationsInfo, &transaltionInfoSize)) 

Pour obtenir les détails de la version spécifique à la langue, utilisez

 SsortingngTable *ssortingngTable; PUINT ssortingngTableSize; std::wssortingng path( L"\\SsortingngFileInfo\\" ); path += L"040904b0"; // get this value from the language support list path += L"\\FileVersion"; VerQueryValue(buffer.get(), path.c_str(), (void**) &ssortingngTable, &ssortingngTableSize)) 

Ce doit être une chaîne dont vous pouvez trouver le format ici:
http://www.hep.wisc.edu/~pinghc/books/apirefeng/v/verqueryvalue.html

Il y a un autre exemple d’utilisation (en VB, facile à lire):
http://support.microsoft.com/kb/160042

Vous pouvez également consulter l’intégralité de l’article CodeProject pour un exemple de travail en C ++:
http://www.codeproject.com/KB/cpp/GetLocalVersionInfos.aspx

Un autre article sur le sujet de la récupération des informations de version:
http://www.microsoft.com/msj/0498/c0498.aspx