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

转载于: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);

完成了,效果如下图:

时间: 2024-08-14 00:19:54

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

Windows Store App 全球化:引用分离资源文件中的资源

大部分应用程序仅需要单个默认资源文件,例如Strings/zh-CN/Resources.resw,但是在某些应用程序中,最好将资源分离到多个资源文件中,以便更好地组织资源内容,这样就需要考虑如何引用这些分离资源文件中的资源.下面通过一个示例讲解如何在后台代码中引用分离资源文件中的字符串资源. 新建一个Windows应用商店的空白应用程序项目,并命名为SeparatedResourcesFiles.在项目中添加如18.2.3小节示例中相同的语言文件夹.资源文件以及资源信息.完成上述操作后,在"z

在VC程序中获得资源文件中定义的公司名称

今天想从自己定义的资源文件中取出公司名称, 百度了下发现全是关于从资源文件中取得版本号的办法, 还好微软的MSDN给了我答案, 为了以后方便自己和别人, 就把这个函数贴出来. 希望百度能优化一下自己的搜索算法, 搜出来的结果几乎都是重复的, 想用能搜出来的结果用不了.百度的这一毛病也映射出了中国网民的复制粘贴的"情结"特别严重, 都是原样复制, 其中的错误都不改一下. ///////////////////////////////////////////////////////////

(转载)Android xml资源文件中@、@android:type、@*、?、@+引用写法含义以及区别

原帖地址:http://blog.csdn.net/zfrong/article/details/7332545 Android xml资源文件中@.@android:type.@*.?.@+引用写法含义以及区别 一[email protected]代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@android:type/name android:textColor=&

读取web应用下的资源文件(例如properties)

1 package gz.itcast.b_resource; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.Properties; 6 7 import javax.servlet.ServletException; 8 import javax.servlet.http.HttpServlet; 9 import javax.servlet.http.HttpServletRe

文件_ _android从资源文件中读取文件流并显示的方法

======== 1   android从资源文件中读取文件流并显示的方法. 在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样: private void doRaw(){ InputStream is = this.getResources().openRawResource(R.raw.ziliao); try{ doRead(is); }catch(IOException e){ e.printStackTrace(); } } pri

如何在Qt资源文件中包含exe等各种类型文件?

操作系统:Windows 10 X64 企业版 Qt: 5.8.0 QtCreater: 4.2.1 刚刚开始学习Qt,不断遇到困难和挑战,前几天在各个QQ群里询问如何在Qt的资源文件中包含和释放exe可执行文件,结果没有谁给我一个准确的答复,包括问写过图书的选手!!我现在非常鄙视写书的选手,是高傲还是为了面子,对于我的问题根本就不回答!!!不仅仅是一个写书选手这样,很多个!!!我相信很多作者都是乐于帮助别人,极少数人才这个德性!!!! Qt做为开发了这么多年的跨平台GUI开发解决方案,我相信这

maven 编译部署src/main/java下的资源文件

maven 编译部署src/main/java下的资源文件 maven默认会把src/main/resources下的所有配置文件以及src/main/java下的所有java文件打包或发布到target\classes下面, 但是现实我们可能会在src/main/java下面也放置一些配置文件如hibernate配置文件或mybatis mapper配置文件等, 如果不做一些额外配置,那我们打包后的项目可能找不到这些必须的资源文件,因此在pom.xml中增加类似如下配置: <build> &

8、Maven打包时resources文件夹下的资源文件没有打进去的解决措施

场景:使用maven install进行打包时,发现resources文件夹下的资源文件没有打进去,war中展示的还是修改前的原文件,解决措施如下: 1.在pom.xml文件中,在<build>打包标签中增加resources标签配置,指定maven将resources资源文件进行打包: 原文地址:https://www.cnblogs.com/wf2010517141/p/10451182.html

Android xml资源文件中@、@android:type、@*、?、@+含义和区别

一[email protected]代表引用资源 1.引用自定义资源.格式:@[package:]type/name android:text="@string/hello" 2.引用系统资源.格式:@android:type/name android:textColor="@android:color/opaque_red" 注意:其实@android:type/name是@[package:]type/name 的一个子类 二[email protected]*