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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[72] [팁]FileVersion 알아내기입니다.
임승균.조로 [zoro] 8041 읽음    2000-12-30 00:00
안녕하세요~

이예제는 wininet.dll의 버전을 가져오는 예제입니다..
이외에도 파일 설명이나 제작사 그리고 주석등 을 가져올수 있습니다
VersionInfo 함수에 sQuery 인자에
Comments, InternalName, ProductName,CompanyName, LegalCopyright, ProductVersion,
FileDescription, LegalTrademarks, PrivateBuild, FileVersion,
OriginalFilename, SpecialBuild등을 넣어서 정보를 뽑아 오시면 되겠죠~~

저도 FileVersion 하고 FileDescrption정도 만 써봐서 나머지는 되는지 확인
못해봤어요~

제가 예전에 썼던 소스를 보여드리죠~ 아마 정우철님 책에서 보구 했을걸요..


필요하시면 밑에 VersionInfo 함수를 그냥 copy해서 쓰셔요..

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

  // 버전을 알고 싶은 파일의 위치..
  AnsiString filename = "c:\\winnt\\system32\\wininet.dll";

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

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Caption = VersionInfo("FileVersion");
}
//---------------------------------------------------------------------------

그럼 즐거운 하루 되세요~~

+ -

관련 글 리스트
72 [팁]FileVersion 알아내기입니다. 임승균.조로 8041 2000/12/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.