Version Anzeigen
-
So ich hab mal wieder eine Frage:
Und zwar gibt es unter Ressourcen ja "Version" und dort kann man jede Menge schöne Sachen eintragen, wie Beschreibung, Name, Versions Info etc. wie kann ich das alles einfach nur anzeigen lassen, wenn ich bei mir im Menü auf Info klicke. Möchte damit nix machen, es nur anzeigen lassen.
Gruß Marco
Danke
-
-
Gruß
IcemanX
*.cpp Datei
#include "crVersionsInfo.h" //----------------------------------------------------------------- // Klasse zum Auslesen der Versionsinformationen aus den Windows-Exe und DLLs //----------------------------------------------------------------- // Verwendung: // Füllen einer Memo-Komponente mit Vesions-Informationen des // Windows-Notepads: // TCRVerInfo * pVer = new TCRVerInfo("C:\\WINDOWS\\NOTEPAD.EXE"); // for(int ilCount = 0; ilCount < 10; ilCount++) // { Memo1 -> Lines -> Add(pVer -> GetVerInfo(ilCount)); } // if(pVer != NULL) { delete pVer; pVer = NULL; } // Anstatt ilCount kann der Funktion GetVerInfo()-Funktion eine der unten // aufgelisteten Konstanten übergeben werden //----------------------------------------------------------------- //------------------------------------------------------------------- // Konstruktor der TCRVerInfo - Klasse //------------------------------------------------------------------- TCRVerInfo::TCRVerInfo(AnsiString slExeName) { DWORD handle; // Dummy, Windows does not use this parameter. DWORD size; if(!FileExists(slExeName)) { slExeName = Application -> ExeName; } size = GetFileVersionInfoSize(slExeName.c_str(), &handle); if(size == 0) return; // No file information char *buffer = new char [size]; bool status = GetFileVersionInfo(slExeName.c_str(), 0, size, buffer); if(!status) { delete [] buffer; return; } // Extract the language ID UINT datasize; unsigned short *translation; /*status =*/ VerQueryValue( buffer, "\\VarFileInfo\\Translation", (void **) &translation, &datasize); // Here we create a prefix string that is the same for all the keys. AnsiString prefix = "\\StringFileInfo\\" + AnsiString::IntToHex(translation [0], 4) + AnsiString::IntToHex(translation [1], 4); // Extract all the version information. company_name = GetVersionKey(buffer, prefix, "CompanyName"); file_description = GetVersionKey(buffer, prefix, "FileDescription"); file_version = GetVersionKey(buffer, prefix, "FileVersion"); internal_name = GetVersionKey(buffer, prefix, "InternalName"); legal_copyright = GetVersionKey(buffer, prefix, "LegalCopyright"); legal_trademarks = GetVersionKey(buffer, prefix, "LegalTrademarks"); original_filename = GetVersionKey(buffer, prefix, "OriginalFilename"); product_name = GetVersionKey(buffer, prefix, "ProductName"); product_version = GetVersionKey(buffer, prefix, "ProductVersion"); file_comments = GetVersionKey(buffer, prefix, "Comments"); delete [] buffer; return; } //-------------------------------------------------------------------- // Extrahiert Versions-Info aus dem buffer //------------------------------------------------------------------- char* TCRVerInfo::GetVersionKey(char *buffer, const AnsiString &prefix, char *key) { char *data; UINT datasize; AnsiString fullkey = prefix + "\\" + key; bool status = VerQueryValue(buffer, fullkey.c_str(), (void **) &data, &datasize); if(status) return(data); else return(""); } //------------------------------------------------------------------- // Gibt die Vesions-Infos zurück //------------------------------------------------------------------- AnsiString TCRVerInfo::GetVerInfo(int ilId) { switch (ilId) { case VI_COMPANY_NAME : return company_name; case VI_FILE_DESCRIPTION : return file_description; case VI_FILE_VERSION : return file_version; case VI_INTERNAL_NAME : return internal_name; case VI_LEGAL_COPYRIGHT : return legal_copyright; case VI_LEGAL_TRADEMARKS : return legal_trademarks; case VI_ORIGINAL_FILENAME : return original_filename; case VI_PRODUCT_NAME : return product_name; case VI_PRODUCT_VERSION : return product_version; case VI_FILE_COMMENTS : return file_comments; default : return file_version; } }*.h Datei
#include <vcl.h> //---------------------------------------------------------------- // Konstanten für die Verwendung als Parameter mit der // Funktion GetVerInfo(int ilId): //----------------------------------------------------------------- const int VI_COMPANY_NAME = 0; // Firmen-Name const int VI_FILE_DESCRIPTION = 1; // Dateibeschreibung const int VI_FILE_VERSION = 2; // Versionsnummer const int VI_INTERNAL_NAME = 3; // Interner Name const int VI_LEGAL_COPYRIGHT = 4; // Copyright-Info const int VI_LEGAL_TRADEMARKS = 5; // Warenzeichen const int VI_ORIGINAL_FILENAME = 6; // Orig.-Dateiname const int VI_PRODUCT_NAME = 7; // Produktname const int VI_PRODUCT_VERSION = 8; // Produkt-Version const int VI_FILE_COMMENTS = 9; // Kommentare //--------------------------------------------------------------------- // Klassendeklaration //------------------------------------------------------------------- __declspec(dllexport) class TCRVerInfo { private: AnsiString company_name; AnsiString file_description; AnsiString file_version; AnsiString internal_name; AnsiString legal_copyright; AnsiString legal_trademarks; AnsiString original_filename; AnsiString product_name; AnsiString product_version; AnsiString file_comments; protected: char *GetVersionKey(char *buffer, const AnsiString &prefix, char *key); public: // Konstuktor (als Parameter wird der Dateiname übergeben) TCRVerInfo(AnsiString slExeName); // Funktion gibt die angeforderte Ver-Info zurück: AnsiString GetVerInfo(int ilId); };