Ĺadny brzuch
Kompilator (w opcji) umieszcza numer wersji i kompilacji projektu.
Jak ją odczytać ?
Mam coś takiego ale niestety nie odczytuje poprawnie wersji :mad:
W kompilatorze ustawione jest np. 1.2.3.4, a program pokazuje 1.0.0.0. :sick:
String path; struct TransArray{ WORD LanguageID, CharacterSet; }; DWORD VerInfo, VerSize; HANDLE MemHandle; LPVOID MemPtr, BufferPtr; UINT BufferLength; TransArray *Array; char QueryBlock[40]; // Pobierz nazwę oraz numer wersji produktu z informacji o wersji aplikacji. path = Application->ExeName; VerSize = GetFileVersionInfoSize(path.c_str(), &VerInfo); if (VerSize > 0) { MemHandle = GlobalAlloc(GMEM_MOVEABLE, VerSize); MemPtr = GlobalLock(MemHandle); GetFileVersionInfo(path.c_str(), VerInfo, VerSize, MemPtr); VerQueryValue(MemPtr, "\\VarFileInfo\\Translation", &BufferPtr, &BufferLength); Array = (TransArray *)BufferPtr; // Pobierz nazwę produktu. wsprintf(QueryBlock, "\\StringFileInfo\\%04x%04x\\ProductName", Array[0].LanguageID, Array[0].CharacterSet); VerQueryValue(MemPtr, QueryBlock, &BufferPtr, &BufferLength); // Ustaw właściwość Caption etykiety z nazwą produktu. ProductName->Caption = (char *)BufferPtr; // Pobierz numer wersji produktu. wsprintf(QueryBlock, "\\StringFileInfo\\%04x%04x\\ProductVersion", Array[0].LanguageID, Array[0].CharacterSet); VerQueryValue(MemPtr, QueryBlock, &BufferPtr, &BufferLength); // Ustaw właściwość Caption etykiety z numerem wersji. Version->Caption = (char *)BufferPtr; GlobalUnlock(MemHandle); GlobalFree(MemHandle); } else { ProductName->Caption = ""; Version->Caption = ""; }
Użytkownik PabloX edytował ten post 01 grudzień 2005, 21:38
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Jak ją odczytać ?
Mam coś takiego ale niestety nie odczytuje poprawnie wersji :mad:
W kompilatorze ustawione jest np. 1.2.3.4, a program pokazuje 1.0.0.0. :sick:
String path; struct TransArray{ WORD LanguageID, CharacterSet; }; DWORD VerInfo, VerSize; HANDLE MemHandle; LPVOID MemPtr, BufferPtr; UINT BufferLength; TransArray *Array; char QueryBlock[40]; // Pobierz nazwę oraz numer wersji produktu z informacji o wersji aplikacji. path = Application->ExeName; VerSize = GetFileVersionInfoSize(path.c_str(), &VerInfo); if (VerSize > 0) { MemHandle = GlobalAlloc(GMEM_MOVEABLE, VerSize); MemPtr = GlobalLock(MemHandle); GetFileVersionInfo(path.c_str(), VerInfo, VerSize, MemPtr); VerQueryValue(MemPtr, "\\VarFileInfo\\Translation", &BufferPtr, &BufferLength); Array = (TransArray *)BufferPtr; // Pobierz nazwę produktu. wsprintf(QueryBlock, "\\StringFileInfo\\%04x%04x\\ProductName", Array[0].LanguageID, Array[0].CharacterSet); VerQueryValue(MemPtr, QueryBlock, &BufferPtr, &BufferLength); // Ustaw właściwość Caption etykiety z nazwą produktu. ProductName->Caption = (char *)BufferPtr; // Pobierz numer wersji produktu. wsprintf(QueryBlock, "\\StringFileInfo\\%04x%04x\\ProductVersion", Array[0].LanguageID, Array[0].CharacterSet); VerQueryValue(MemPtr, QueryBlock, &BufferPtr, &BufferLength); // Ustaw właściwość Caption etykiety z numerem wersji. Version->Caption = (char *)BufferPtr; GlobalUnlock(MemHandle); GlobalFree(MemHandle); } else { ProductName->Caption = ""; Version->Caption = ""; }
Użytkownik PabloX edytował ten post 01 grudzień 2005, 21:38