Mianowicie przy mapowaniu ustawionym na wchar_t i przy poniższym kodzie funkcji oraz jej wywołaniu (zapisane tak bo mieści się w MessageBox'ie).
Funkcja zwracam mi tylko wartość Major version a chciałbym otrzymać pełen obraz aż do Build.
Co robię źle lub co należy zmienić aby to uzyskać ?
KOD cpp: UKRYJ
//---------------------------------------------------------------------------
String GetFileVersionInfo(wchar_t *ModulePath, String KeyName)
{
LPVOID lpStr1 = NULL, lpStr2 = NULL;
WORD* wTmp;
DWORD dwHandlev = NULL;
UINT dwLength;
wchar_t sFileName[1024] = {0};
wchar_t sTmp[1024] = {0};
String sInfo;
LPVOID* pVersionInfo;
if(ModulePath == NULL) GetModuleFileName(NULL, sFileName, 1024);
else wcscpy(sFileName, (LPTSTR)ModulePath);
DWORD dwInfoSize = GetFileVersionInfoSize(sFileName, &dwHandlev);
if(dwInfoSize)
{
pVersionInfo = new LPVOID[dwInfoSize];
if(GetFileVersionInfo(sFileName, dwHandlev, dwInfoSize, pVersionInfo))
{
if(VerQueryValue(pVersionInfo, L"\\VarFileInfo\\Translation", &lpStr1, &dwLength))
{
wTmp = (WORD*)lpStr1;
swprintf(sTmp, ("\\StringFileInfo\\%04x%04x\\" + KeyName).w_str(), *wTmp, *(wTmp + 1));
if(VerQueryValue(pVersionInfo, sTmp, &lpStr2, &dwLength)) sInfo = (LPSTR)lpStr2;
}
}
delete[] pVersionInfo;
}
return sInfo;
}
//--------------------------------
String GetFileVersionInfo(wchar_t *ModulePath, String KeyName)
{
LPVOID lpStr1 = NULL, lpStr2 = NULL;
WORD* wTmp;
DWORD dwHandlev = NULL;
UINT dwLength;
wchar_t sFileName[1024] = {0};
wchar_t sTmp[1024] = {0};
String sInfo;
LPVOID* pVersionInfo;
if(ModulePath == NULL) GetModuleFileName(NULL, sFileName, 1024);
else wcscpy(sFileName, (LPTSTR)ModulePath);
DWORD dwInfoSize = GetFileVersionInfoSize(sFileName, &dwHandlev);
if(dwInfoSize)
{
pVersionInfo = new LPVOID[dwInfoSize];
if(GetFileVersionInfo(sFileName, dwHandlev, dwInfoSize, pVersionInfo))
{
if(VerQueryValue(pVersionInfo, L"\\VarFileInfo\\Translation", &lpStr1, &dwLength))
{
wTmp = (WORD*)lpStr1;
swprintf(sTmp, ("\\StringFileInfo\\%04x%04x\\" + KeyName).w_str(), *wTmp, *(wTmp + 1));
if(VerQueryValue(pVersionInfo, sTmp, &lpStr2, &dwLength)) sInfo = (LPSTR)lpStr2;
}
}
delete[] pVersionInfo;
}
return sInfo;
}
//--------------------------------
KOD cpp: UKRYJ
...GetFileVersionInfo(NULL, "FileVersion").w_str()...