Четверг, 02.05.2024
Просто сайт
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Программирование » Borland C++ Builder 6 » Функция получения версии файла (Файлы)
Функция получения версии файла
demenevДата: Четверг, 07.01.2010, 16:09 | Сообщение # 1
Группа: Удаленные





Для получения версии файла в C++Builder воспользуйтесь следующим кодом:

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+"\\ProductName").c_str(),&(void *)ValueBuf,&Len) !=0)
AppName->Caption=ValueBuf;

if (VerQueryValue(buf,AnsiString("\\StringFileInfo\\"+CharSet+"\\FileVersion").c_str(),&(void *)ValueBuf,&Len)!=0)
Version->Caption=ValueBuf;

if (VerQueryValue(buf,AnsiString("\\StringFileInfo\\"+CharSet+"\\LegalCopyright").c_str(),&(void *)ValueBuf,&Len)!=0)
Copyright->Caption=ValueBuf;

if (VerQueryValue(buf,AnsiString("\\StringFileInfo\\"+CharSet+"\\CompanyName").c_str(),&(void *)ValueBuf,&Len)!=0)
Company->Caption=ValueBuf;
}
}

GlobalFree(buf);
где AppName, Version, Company - имена компонентов TLabel, которые расположены на вашей форме, и которые отображают полученную информацию.

 
Форум » Программирование » Borland C++ Builder 6 » Функция получения версии файла (Файлы)
  • Страница 1 из 1
  • 1
Поиск:

Copyright MyCorp © 2024
Создать бесплатный сайт с uCoz