|
이걸 찾으시는듯 하네요.
AnsiString __fastcall TFormMain::GetInformation(AnsiString AFilename, AnsiString AQuery)
{
/* ※ AQuery List
- CompanyName
- FileDescription
- FileVersion
- InternalName
- LegalCopyright
- LegalTrademarks
- ProductName
- ProductVersion
*/
if(AQuery.IsEmpty()) return "";
DWORD dwHandle;
LPVOID ptr;
UINT uLength;
DWORD dwVersionInfoSize = GetFileVersionInfoSize(AFilename.c_str(), &dwHandle);
if(dwVersionInfoSize == 0) return "";
LPVOID pFileInfo = (LPVOID) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwVersionInfoSize);
GetFileVersionInfo(AFilename.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) + "\\" + AQuery;
VerQueryValue(pFileInfo, szString.c_str(), &ptr, &uLength);
if(uLength == 0) return "";
AnsiString sOut = AnsiString((char *) ptr);
HeapFree(GetProcessHeap(), 0, pFileInfo);
return sOut;
}
권기식.with☆ 님이 쓰신 글 :
: 다른 질문이라 다른 글로 올립니다.
:
: 대부분 프로그램에는 About Form이 들어가서 프로그램에 대한 정보를 표시해줍니다.
: VB의 경우 간단히 프로그램 버전을 가져올 수 있었는데...
:
: 빌더에서는 그게 안되더군요.
: API 함수를 써야 한다고 하던데...
:
: 다른 라이브러리나 컴포넌트 혹은 지원 함수가 없는지 궁금합니다.
:
: 하나 만들어두면 되는데 이놈의 귀차니즘이란.. ^^a
|