我試圖使用這個函數來抓取任何文件的版本,但我的問題是當我把它看起來像一個鏟子的價值。我知道這裏沒有什麼錯,我在屏幕上的值打印,所以它必須是我的功能內的東西....我只是不知道它可能是什麼。我嘗試將字符串更改爲CompleteVer的char數組,但存在一些問題。絃樂價值如何?
string GetFileVersion(HANDLE hprocess)
{
VS_FIXEDFILEINFO* FFI;
UINT FFISize;
BYTE* VersionInfo;
char Path[MAX_PATH];
int VersionSeg[4] = {0};
string CompleteVer;
if(GetModuleFileNameEx(hprocess,0,Path,sizeof(Path)))
if(int FilePropSize = GetFileVersionInfoSize(Path,0))
{
VersionInfo = new BYTE[FilePropSize];
if(GetFileVersionInfo(Path,0,FilePropSize,VersionInfo))
if(VerQueryValue(VersionInfo,"\\",(void**)&FFI,&FFISize))
{
VersionSeg[0] = HIWORD(FFI->dwFileVersionMS);
VersionSeg[1] = LOWORD(FFI->dwFileVersionMS);
VersionSeg[2] = HIWORD(FFI->dwFileVersionLS);
VersionSeg[3] = LOWORD(FFI->dwFileVersionLS);
delete[] VersionInfo;
for(int x = 0;x < 4;x++)
{
CompleteVer += VersionSeg[x];
}
return CompleteVer;
}
else
return "3";
}
else
return "2";
else
return "1";
}
輸出:♠
絕對是我見過的更可怕的UB形式之一。 – Potatoswatter
你怎麼知道這是黑桃王牌..?這只是spa ... – NREZ
什麼是HIWORD和LOWORD? 'VersionSeg'中的值是什麼? – Potatoswatter