Форум — Ответы ( К темам )
? | Anry: Определение версии файла программы (07-05-2003 09:32:12) |
Как программным способом определить версию файла программы. | |
Andrew (07-05-2003 11:09:11) | |
Если программа твоя, то вначале надо задать версию в Project->Options->Version Info, а после все что там на вписано можно например так: //На форме стоят куча Label'ов с именами lbl... соответствующими различным параметрам Версии файла const AnsiString StrGet[10] = {"CompanyName", "FileDescription", "FileVersion", "InternalName", "LegalCopyright", "LegalTrademarks", "OriginalFilename", "ProductName", "ProductVersion", "Comments"}; unsigned long h; // unsigned long Size=GetFileVersionInfoSize(Application->ExeName.c_str(), &h);// if (Size == 0) return; // char *buf; // buf = (char*)GlobalAlloc(GMEM_FIXED, Size);// if (GetFileVersionInfo(Application->ExeName.c_str(), h, Size, buf) != 0) {// char *ValueBuf; // unsigned int Len; // VerQueryValue(buf, "\\VarFileInfo\\Translation", &(void*)ValueBuf, &Len); if(Len>=4) { // AnsiString CharSet = IntToHex((int)MAKELONG(*(int*)(ValueBuf+2), *(int*)ValueBuf), 8); if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\ProductName").c_str(), &(void*)ValueBuf, &Len)!=0) lblProductName->Caption = ValueBuf; if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\FileDescription").c_str(), &(void*)ValueBuf, &Len)!=0) lblFileDescription->Caption = ValueBuf; if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\FileVersion").c_str(), &(void*)ValueBuf, &Len)!=0) lblFileVersion->Caption = "Версия " + (AnsiString) ValueBuf; if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\LegalCopyright").c_str(), &(void*)ValueBuf, &Len)!=0) lblLegalCopyright->Caption = ValueBuf; if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\CompanyName").c_str(), &(void*)ValueBuf, &Len)!=0) lblCompanyName->Caption = ValueBuf; if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\Comments").c_str(), &(void*)ValueBuf, &Len)!=0) lblComments->Caption = ValueBuf; } //if(Len>=4) } //if (GetFileVersionInfo( GlobalFree(buf); // |