Bonjour, j'aurai besoin de récupérer des informations de versions, et autre sur un logiciel, mais par sur mon application, sur un logiciel déjà installé...
J'ai trouvé dans la F.A.Q ce bout de code, mais je n'arrive pas à l'adapter à mes besoins...

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
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----------------------------" );
   }
}
Si quelqu'un à une idée sur une manière d'obtenir des informations, et principalement le numéro de version d'un logiciel ça serai génialissime!!!!!!!
Merci par avance pour votre aide