【问题标题】:c++ get version from .rc into code [duplicate]c ++从.rc获取版本到代码中[重复]
【发布时间】:2011-07-20 14:07:05
【问题描述】:

可能重复:
How do I read from a version resource in Visual C++

在我的 c++ 项目中,我添加了一个 .rc 文件,我可以在其中存储文件版本、可执行文件描述、版权等。

没关系,我编译,我转到资源管理器 -> 文件属性,我看到表单中的所有字段。

我的问题是:如果我需要从项目中读取自己的文件版本(例如显示到表单中),我该怎么做?

谢谢

【问题讨论】:

  • @volkerk 现在不应该是“winapi”吗? ;)

标签: c++ versioninfo


【解决方案1】:

Windows 提供一组来自可执行文件的API calls for retrieving the version information。下面的 sn-p 代码应该可以帮助您入门。

bool GetVersionInfo(
    LPCTSTR filename,
    int &major,
    int &minor,
    int &build,
    int &revision)
{
    DWORD   verBufferSize;
    char    verBuffer[2048];

    //  Get the size of the version info block in the file
    verBufferSize = GetFileVersionInfoSize(filename, NULL);
    if(verBufferSize > 0 && verBufferSize <= sizeof(verBuffer))
    {
        //  get the version block from the file
        if(TRUE == GetFileVersionInfo(filename, NULL, verBufferSize, verBuffer))
        {
            UINT length;
            VS_FIXEDFILEINFO *verInfo = NULL;

            //  Query the version information for neutral language
            if(TRUE == VerQueryValue(
                verBuffer,
                _T("\\"),
                reinterpret_cast<LPVOID*>(&verInfo),
                &length))
            {
                //  Pull the version values.
                major = HIWORD(verInfo->dwProductVersionMS);
                minor = LOWORD(verInfo->dwProductVersionMS);
                build = HIWORD(verInfo->dwProductVersionLS);
                revision = LOWORD(verInfo->dwProductVersionLS);
                return true;
            }
        }
    }

    return false;
}

【讨论】:

    【解决方案2】:

    在可执行文件上使用这些函数:

    http://msdn.microsoft.com/en-us/library/ms646981%28v=VS.85%29.aspx

    【讨论】:

      猜你喜欢
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-26
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 2017-05-24
      • 2017-07-18
      相关资源
      最近更新 更多