C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[26885] Re:Application Version 정보를 가져올수 있나요?
꼴.시크릿 [kkol] 1165 읽음    2003-08-23 01:28
마차 님이 쓰신 글 :
: 프로그램 도중 프로그램의 버전정보를 실시간으로 가져오고 싶은데 어케 해야 되는지요?
: 프로젝트에서 버전정보를 관리하고 있는데 프로그램에서 불러오려면 어케해야 되는지요..

어디선가 받은 소스인데.. 참고하세요.
이 소스만 이용해도 원하는거 할수 있을겁니다. ^^

..  //---------------------------------------------------------------------------
AnsiString __fastcall VersionInfo(const AnsiString &sQuery)
{
   DWORD dwHandle = 0, dwVersionInfoSize;
   UINT uLength;
   LPVOID pFileInfo, ptr;
   AnsiString sOut; // 리턴될 버전 정보.

   AnsiString filename = Application->ExeName;

   dwVersionInfoSize = GetFileVersionInfoSize(filename.c_str(), &dwHandle);

   pFileInfo = (LPVOID) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwVersionInfoSize);

   GetFileVersionInfo(filename.c_str(), dwHandle, dwVersionInfoSize, pFileInfo);
   VerQueryValue(pFileInfo, TEXT("\\VarFileInfo\\Translation"), &ptr, &uLength);

   WORD *id = (WORD *) ptr;
   AnsiString szString = "\\StringFileInfo\\" + IntToHex(id[0], 4) + IntToHex(id[1], 4) + "\\" + sQuery;

   VerQueryValue(pFileInfo, szString.c_str(), &ptr, &uLength);
   sOut = AnsiString((char *) ptr);
   HeapFree(GetProcessHeap(), 0, pFileInfo );
   return sOut;
}


//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   const AnsiString InfoStr[10] = {"CompanyName", "FileDescription", "FileVersion", "InternalName", "LegalCopyright", "LegalTradeMarks", "OriginalFileName", "ProductName", "ProductVersion", "Comments"};
   for (int i = 0; i < 10; i++)
   {
        Memo1->Lines->Add(InfoStr[i] + " : " + VersionInfo(InfoStr[i]));
   }

}





+ -

관련 글 리스트
26882 Application Version 정보를 가져올수 있나요? 마차 746 2003/08/22
33210     Re:Application Version 정보를 가져올수 있나요? posix.duo 1019 2003/08/22
26885     Re:Application Version 정보를 가져올수 있나요? 꼴.시크릿 1165 2003/08/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.