Здесь же или на http://forum.sources.ru недавно было:
| Код | void __fastcall TForm1::FormCreate(TObject *Sender) { DWORD h; DWORD 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; UINT 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+"\\InternalName").c_str(), &(void*)ValueBuf, &Len)!=0) Memo1->Lines->Add(ValueBuf); //AppName->Caption=ValueBuf;
if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\ProductName").c_str(), &(void*)ValueBuf, &Len)!=0) Memo1->Lines->Add(ValueBuf); //AppName->Caption=ValueBuf; if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\FileVersion").c_str(), &(void*)ValueBuf, &Len)!=0) Memo1->Lines->Add(ValueBuf); //Version->Caption=ValueBuf; if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\LegalCopyright").c_str(), &(void*)ValueBuf, &Len)!=0) Memo1->Lines->Add(ValueBuf); //Copyright->Caption=ValueBuf; if(VerQueryValue(buf, AnsiString("\\StringFileInfo\\"+CharSet+"\\CompanyName").c_str(), &(void*)ValueBuf, &Len)!=0) Memo1->Lines->Add(ValueBuf); //Company->Caption=ValueBuf;
} } GlobalFree(buf); } //---------------------------------------------------------------------------
|
|