0

私はこの関数を使用して任意のファイルのバージョンを取得しようとしていますが、私の問題は、スペードとして表示される値を計算するときです。画面に値を出力する方法に問題がないことはわかっているので、関数内にある必要があります....それが何であるかわかりません。CompleteVer で string から 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";
}

出力: ♠</p>

4

1 に答える 1