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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| String PathNomExt = Application->ExeName;
DWORD Size = GetFileVersionInfoSize(PathNomExt.c_str(), &Size);
if (Size <= 0) {
Memo_resultat_test->Lines->Add( "Pas d'information de version dans cette application." );
return;
}
BYTE *Buffer;
try{
Buffer = new unsigned char[Size];
LPVOID Str;
UINT Len;
String TypeInfo;
LPDWORD lpdwLangCp;
char szFileInfo[26];
GetFileVersionInfo(PathNomExt.c_str(), 0, Size, Buffer);
// Lecture de la table des langues et jeux de caractères
if (!VerQueryValue(Buffer, "\\VarFileInfo\\Translation", (LPVOID *)&lpdwLangCp, &Len)) return; // erreur
wsprintf(szFileInfo, "\\StringFileInfo\\%04x%04x\\", LOWORD(*lpdwLangCp), HIWORD(*lpdwLangCp));
// Nom de l'organisation
TypeInfo = szFileInfo + (AnsiString) "CompanyName";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Nom de l'organisation :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Nom de l'organisation :\tErreur de lecture" );
// Description
TypeInfo = szFileInfo + (AnsiString) "FileDescription";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Description :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Description :\tErreur de lecture" );
// Version de fichier
TypeInfo = szFileInfo + (AnsiString) "FileVersion";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Version de fichier :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Version de fichier :\tErreur de lecture" );
// Nom interne
TypeInfo = szFileInfo + (AnsiString) "InternalName";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Nom interne :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Nom interne :\tErreur de lecture" );
// Copyright
TypeInfo = szFileInfo + (AnsiString) "LegalCopyRight";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Copyright :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Copyright :\tErreur de lecture" );
// Marques légales
TypeInfo = szFileInfo + (AnsiString) "LegalTrademarks";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Marques légales :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Marques légales :\tErreur de lecture" );
// Nom d'origine du fichier
TypeInfo = szFileInfo + (AnsiString) "OriginalFileName";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Nom d'origine du fichier :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Nom d'origine du fichier :\tErreur de lecture" );
// Nom du produit
TypeInfo = szFileInfo + (AnsiString) "ProductName";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Nom du produit :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Nom du produit :\tErreur de lecture" );
// Version du produit
TypeInfo = szFileInfo + (AnsiString) "ProductVersion";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Version du produit :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Version du produit :\tErreur de lecture" );
// Commentaire
TypeInfo = szFileInfo + (AnsiString) "Comments";
if (VerQueryValue(Buffer, TypeInfo.c_str(), &Str, &Len))
Memo_resultat_test->Lines->Add( "Commentaire :\t" + (AnsiString) reinterpret_cast<char *>(Str) );
else Memo_resultat_test->Lines->Add( "Commentaire :\tErreur de lecture" );
}
__finally{
delete Buffer;
Memo_resultat_test->Lines->Add( "\t----------------------------" );
}
} |
Partager