C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Version Info в проекте, Как считать его из прграммы
Schumi
Отправлено: 09.11.2003, 14:23


Машинист паровоза

Группа: Участник
Сообщений: 206



В проекте настраивается параметры Version Info,такие версия,внутреннее имя,название проги, и т.д. А есть параметры,которые я могу сам создавать.
Как мне считать их из проги?
xTrim
Отправлено: 09.11.2003, 15:11


Машинист паровоза

Группа: Участник
Сообщений: 208



У меня есть такая функция
CODE

AnsiString GetAppParam(AnsiString pname)
{
AnsiString ret("");
DWORD h;
DWORD Size = GetFileVersionInfoSize(Application->ExeName.c_str(), &h);
if (Size == 0)
 return ret;
char* buf;
buf = (char *) GlobalAlloc(GMEM_FIXED, Size);
if (GetFileVersionInfo(Application->ExeName.c_str(), h, Size, buf) != 0)
{
 AnsiString pAppName;
 AnsiString pVersion;
 AnsiString pCopyright;
 AnsiString pCompany;
 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 + "\\ProductName").c_str(),
     &(void *) ValueBuf, &Len) != 0)
   pAppName = ValueBuf;
  if (VerQueryValue(buf,
     AnsiString("\\StringFileInfo\\" + CharSet + "\\FileVersion").c_str(),
     &(void *) ValueBuf, &Len) != 0)
   pVersion = ValueBuf;
  if (VerQueryValue(buf,
     AnsiString("\\StringFileInfo\\" + CharSet + "\\LegalCopyright").c_str(),
     &(void *) ValueBuf, &Len) != 0)
   pCopyright = ValueBuf;
  if (VerQueryValue(buf,
     AnsiString("\\StringFileInfo\\" + CharSet + "\\CompanyName").c_str(),
     &(void *) ValueBuf, &Len) != 0)
   pCompany = ValueBuf;
 }
 if (pname == "AppName")
  ret = pAppName;
 if (pname == "Version")
  ret = pVersion;
 if (pname == "Copyright")
  ret = pCopyright;
 if (pname == "Company")
  ret = pCompany;
}
GlobalFree(buf);
return ret;
}



при желании можно дописать что требуется...
Admin
Отправлено: 09.11.2003, 15:24


Владимир

Группа: Администратор
Сообщений: 1190



И в архиве Форума:

http://www.rxlib.ru/progi/forum_answer.php...p?id=2430&nn=90

Вернуться в Вопросы программирования в C++Builder