
void getFileVersionInfo(QString &strProductVersion, QString &strFileVersion)
{
QString fullName = QCoreApplication::applicationFilePath();
std::string strTemp = fullName.toStdString();
LPCSTR str_path = strTemp.c_str();
DWORD vHandle = 0;
DWORD dwLen = GetFileVersionInfoSizeA(str_path, &vHandle);
if (0 == dwLen) {
return;
}
char* lpData = (char*)malloc(dwLen + 1);
if (NULL == lpData) {
return;
}
do {
// ProductVersion
BOOL bSuccess = GetFileVersionInfoA(str_path, 0, dwLen + 1, lpData);
if (!bSuccess) break;
LPVOID lpBuffer = NULL;
UINT uLen = 0;
bSuccess = VerQueryValueA(lpData, "\\StringFileInfo\\080404b0\\ProductVersion", &lpBuffer, &uLen);
if (!bSuccess) {
DWORD ttt = GetLastError();
break;
}
strProductVersion = QString::fromLatin1((char *)lpBuffer);
// FileVersion
lpBuffer = NULL;
uLen = 0;
bSuccess = VerQueryValueA(lpData, "\\StringFileInfo\\080404b0\\FileVersion", &lpBuffer, &uLen);
if (!bSuccess) {
DWORD ttt = GetLastError();
break;
}
strFileVersion = QString::fromLatin1((char *)lpBuffer);
} while (false);
free(lpData);
lpData = NULL;
}