|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Как положить версию файла на Splash |
|
Как положить версию файла на Splash
|
Старожил Сообщения: 244 |
Профиль | Отправить 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 |
Старожил Сообщения: 244
|
Профиль | Отправить 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|