|
답변을 주셔서 감사합니다.
유용하게 사용하겠습니다. 두 군데 철자를 잘못 쓰셔서 에러나는 곳은 고쳤습니다.
위의 코드가 에러가 나시는 분은 아래의 코드로 쓰시면 됩니다.
좋은 답변에 진심으로 감사드립니다.
감사합니다.
FriendPlus 님이 쓰신 글 :
: AnsiString __fastcall Information(AnsiString AFilename, AnsiString AQuery)
: {
: 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;
: }
:
:
: ※ AQuery List
: - CompanyName
: - FileDescription
: - FileVersion
: - InternalName
: - LegalCopyright
: - LegalTrademarks
: - ProductName
: - ProductVersion
|