Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Как положить версию файла на Splash

Ответить
Настройки темы
Как положить версию файла на Splash

Аватара для Megabizon

Старожил


Сообщения: 244
Благодарности: 1

Профиль | Отправить PM | Цитировать


В Билдере взял пример создания Splash окна, хочу сделать так чтобы на этом окне через Лэйбел выводилась версия программы, в обработчике onShow сделал код:
AnsiString P=Application->ExeName;
LPTSTR P1 = P.c_str();
LPVOID FData;
DWORD Len = GetFileVersionInfoSize(P1,NULL);
GetFileVersionInfo(P1,NULL,Len,FData);
Дальше пока не стал делать, потому что на последней функции выдается ошибка из-под Билдера
Project ...... faulted with message:'privileged instruction at 0x004f0046...
ЗЫ Сплэш окно создается так
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
FSplash = new TFSplash(Application);
FSplash->Show();
FSplash->Update();
Application->Initialize();
.......
FSplash->Hide();
FSplash->Close();
Application->Run();
}
......
В чем ошибка? Или научите как это делается.

-------
С уважением


Отправлено: 18:34, 21-03-2003

 

Аватара для Megabizon

Старожил


Сообщения: 244
Благодарности: 1

Профиль | Отправить PM | Цитировать


Снимается, нашел решение, ну если кому надо, то вот:
Код: Выделить весь код
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+"\\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->Caption;Version->Caption;Copyright->Caption;Company->Caption - это
объекты, на которые выводят данные о версии.
*


[s]Исправлено: Megabizon, 9:09 24-03-2003[/s]


[s]Исправлено: Megabizon, 10:22 24-03-2003[/s]

-------
С уважением


Отправлено: 09:08, 24-03-2003 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Как положить версию файла на Splash

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] как узнать “версию файла”? akrav Скриптовые языки администрирования Windows 10 14-09-2020 13:26
Касперский предлагает положить конец анонимности в интернете OSZone News Новости информационных технологий 15 09-12-2009 20:17
Интерфейс - Как посмотреть версию исполняемого файла с произвольным расширением Vic21 Microsoft Windows 7 2 16-11-2009 15:12
[решено] Положить в папку файлы при установке. mooseyaka Автоматическая установка Windows 2000/XP/2003 7 01-06-2007 08:43
Как узнать версию FireWall AlpCRAZY Сетевые технологии 1 01-11-2004 19:07




 
Переход