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
|
|
|