안녕하세요~
이예제는 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");
}
//---------------------------------------------------------------------------
그럼 즐거운 하루 되세요~~
|