繁体   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