簡體   English   中英

您應該為Windows API調用VerQueryValue提供哪些參數

[英]What Arguments are you supposed to give to the Windows API call VerQueryValue

我理解第一個參數必須是GetFileVersionInfo()的結果。

第三個和第四個是目標緩沖區和大小

第二個參數是什么,lpSubBlock?

提前致謝

當您通過資源編輯器查看版本信息時,您可能會注意到有一個包含FILEVERSION,PRODUCTVERISON等的初始部分,然后是一個或多個包含特定於語言的設置的塊。

VS_VERSION_INFO VERSIONINFO
 FILEVERSION 5,0,0,0
 PRODUCTVERSION 5,0,0,0
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x40004L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", ""
            VALUE "FileVersion", "5, 0, 0, 0"
            VALUE "ProductName", ""
            VALUE "ProductVersion", "5, 0, 0, 0"
        END
        BLOCK "000004b0"
        BEGIN
            VALUE "CompanyName", ""
            VALUE "FileVersion", "5, 0, 0, 0"
            VALUE "ProductName", ""
            VALUE "ProductVersion", "5, 0, 0, 0"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x0, 1200, 0x409, 1200
    END
END

獲取具有非語言特定詳細信息的VS_FIXEDFILEINFO

VS_FIXEDFILEINFO *versionInfo;
PUINT versionInfoSize;
VerQueryValue(buffer.get(), TEXT("\\"), (void**) &versionInfo, &versionInfoSize))

要了解支持哪種語言使用

Var *translationsInfo;
PUINT transaltionInfoSize;
VerQueryValue(buffer.get(), TEXT("\\VarFileInfo\\Translation"), (void**) &translationsInfo, &transaltionInfoSize))

要獲取特定語言版本的詳細信息,請使用

StringTable *stringTable;
PUINT stringTableSize;
std::wstring path( L"\\StringFileInfo\\" );
path += L"040904b0";  // get this value from the language support list
path += L"\\FileVersion";
VerQueryValue(buffer.get(), path.c_str(), (void**) &stringTable, &stringTableSize))

它必須是一個字符串,其格式可以在這里找到:
http://www.hep.wisc.edu/~pinghc/books/apirefeng/v/verqueryvalue.html

還有另一個使用示例(在VB中,易於閱讀):
http://support.microsoft.com/kb/160042

您還可以查看整個CodeProject文章,了解C ++中的工作示例:
http://www.codeproject.com/KB/cpp/GetLocalVersionInfos.aspx

另一篇關於檢索版本信息的文章:
http://www.microsoft.com/msj/0498/c0498.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM