|
AnsiString __fastcall PlusSoft_DllCall::Information(AnsiString AFilename, AnsiString AQuery)
{
if(AQuery.IsEmpty()) return "";
DWORD dwHandle;
LPVOID ptr;
UINT uLength;
DWORD dwVersionInfoSize = GetFileVersionInfoSize(AFFilename.c_str(), &dwHandle);
if(dwVersionInfoSize == 0) return "";
LPVOID 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) + "\\" + 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
|