码迷,mamicode.com
首页 > 其他好文 > 详细

vs下取得资源文件中的版本信息

时间:2015-10-29 11:06:31      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:

转载于:http://www.cnblogs.com/procoder/archive/2009/11/13/windows-mobile-wtl-version.html

在Windows Mobile和Wince(Windows Embedded CE)下开发的产品,有时候需要显示当前产品的版本信息。一般来说,版本信息是保存在资源文件里面的,例如下图:

 技术分享

为了保持一致,所有版本信息应该都从资源文件读取,不应该另外硬编码(Hard code)。

下面讲述读取资源文件版本信息的方法:

1.在资源文件中新建一个版本信息项

技术分享

 

2.根据需求修改版本信息

 技术分享

 

3.增加取版本信息函数

下面是自己在vs2003下编译通过的版本。

虽然编译时通过了,但是连接还是会出现错误的,下面是解决办法:

在工程属性——配置属性——链接器——输入,“附加依赖项”处添加Version.lib   。

 

CString GetVersionInfo(HMODULE hLib)
{
    CString version;
    TCHAR appFilePath[MAX_PATH];
    memset(appFilePath, 0, sizeof(char) * MAX_PATH);
    if (GetModuleFileName(hLib, appFilePath, MAX_PATH))
    {
        DWORD hand = 0;
        DWORD verLen = GetFileVersionInfoSize(appFilePath,&hand);
        if (0 < verLen)
        {
            TCHAR *verData = (TCHAR *)malloc(verLen);
            if (verData)
            {
                if (GetFileVersionInfoW((LPCWSTR)appFilePath,hand,verLen,verData))
                {
                    VS_FIXEDFILEINFO *verInfo;
                    unsigned bufLen;
                    if (VerQueryValueW(verData,(LPWSTR)_T("\\"),(LPVOID *)&verInfo,(PUINT)&bufLen))
                    {
                        TCHAR numbTxt[8];
                        memset(numbTxt,0,8);
                        //    major
                        _itow(HIWORD(verInfo->dwFileVersionMS),(wchar_t*)numbTxt,10);
                        version = numbTxt;
                        version += _T(".");
                        //    minor
                        _itow(LOWORD(verInfo->dwFileVersionMS),(wchar_t*)numbTxt,10);
                        version += numbTxt;
                        version += _T(".");
                        //    build
                        _itow(HIWORD(verInfo->dwFileVersionLS),(wchar_t*)numbTxt,10);
                        version += numbTxt;
                        version += _T(".");
                        //    revision
                        _itow(LOWORD(verInfo->dwFileVersionLS),(wchar_t*)numbTxt,10);
                        version += numbTxt;
                    }
                }
                free(verData);
            }
        }
    }
    return version;
}

 

这是作者的原版

 

CString CConfigDialog::GetVersionInfo(HMODULE hLib)
{
    CString version;
    TCHAR appFilePath[MAX_PATH];
    memset(appFilePath, 0, sizeof(char) * MAX_PATH);
    if (GetModuleFileName(hLib, appFilePath, MAX_PATH))
    {
        DWORD hand = 0;
        DWORD verLen = GetFileVersionInfoSize(appFilePath,&hand);
        if (0 < verLen)
        {
            TCHAR *verData = (TCHAR *)malloc(verLen);
            if (verData)
            {
                if (GetFileVersionInfoW(appFilePath,hand,verLen,verData))
                {
                    VS_FIXEDFILEINFO *verInfo;
                    unsigned bufLen;
                    if (VerQueryValueW(verData,_T("\\"),(LPVOID *)&verInfo,(PUINT)&bufLen))
                    {
                        TCHAR numbTxt[8];
                        memset(numbTxt,0,8);
                        //    major
                        _itow(HIWORD(verInfo->dwFileVersionMS),numbTxt,10);
                        version = numbTxt;
                        version += _T(".");
                        //    minor
                        _itow(LOWORD(verInfo->dwFileVersionMS),numbTxt,10);
                        version += numbTxt;
                        version += _T(".");
                        //    build
                        _itow(HIWORD(verInfo->dwFileVersionLS),numbTxt,10);
                        version += numbTxt;
                        version += _T(".");
                        //    revision
                        _itow(LOWORD(verInfo->dwFileVersionLS),numbTxt,10);
                        version += numbTxt;
                    }
                }
                free(verData);
            }
        }
    }
    return version;
}

4.取出版本信息

HINSTANCE hInst = (HINSTANCE)hModule;
GetVersionInfo(hInst);

完成了,效果如下图:

 技术分享

vs下取得资源文件中的版本信息

标签:

原文地址:http://www.cnblogs.com/shmilxu/p/4919444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!