Я действительно путаю с этой функцией. В настоящее время я успешно получаю версию файла и версию продукта. Теперь я хочу получить больше информации в приложении. как FileDescription и CompanyName.
DWORD dwLen;
VS_FIXEDFILEINFO *pFileInfo;
UINT pLenFileInfo;
dwLen = GetFileVersionInfoSize("D:/firefox.exe", NULL);
BYTE *sKey = new BYTE[dwLen];
GetFileVersionInfo("D:/firefox.exe", NULL, dwLen, sKey);
VerQueryValue(sKey, "\\", (LPVOID*)&pFileInfo, &pLenFileInfo);
// at now i can retrieve file Version with structure VS_FIXEDFILEINFO
VerQueryValue(sKey, "\\StringFileInfo\\%04x%09x\\FileDescription", (LPVOID*) &pFileInfo, &pLenFileInfo);
delete[] sKey;
cout << pFileInfo;
// it return address buffer `00230428`;
как именно вернуть описание файла Firefox
? что за структура для получения описания файла в параметре 3 LPVOID? в моем коде я передаю pFileInfo дважды в VerQueryValue
Новое редактирование
DWORD dwLen;
struct LANGANDCODEPAGE {
WORD wLanguage;
WORD wCodePage;
} *lpTranslate;
dwLen = GetFileVersionInfoSize("D:/firefox.exe", NULL);
BYTE *sKey = new BYTE[dwLen];
TCHAR *sCompanyName = new char[1024];
GetFileVersionInfo("D:/firefox.exe", NULL, dwLen, sKey);
VerQueryValue(sKey, "\\VarFileInfo\\Translation", (LPVOID*)&lpTranslate, &pLenFileInfo);
VerQueryValue(test, "\\StringFileInfo\\%04x%09x\\FileDescription", (LPVOID*)&sCompanyName, &pLenFileInfo);
delete[] sKey;
cout << lpTranslate -> wLanguage;