VC获得程序自身的版本号
2015-11-04 15:06
387 查看
操作系统: Windows7 64位
运行环境: Visual Studio 10
文件编码: Unicode
运行环境: Visual Studio 10
文件编码: Unicode
char* GetLocalPogramVersion() { TCHAR pFilePath[MAX_PATH] = {0}; DWORD dwRet = GetModuleFileName(NULL, pFilePath, MAX_PATH); if(dwRet == 0) { TRACE("h获取程序的文件路径失败,错误码:%s\n",GetLastError()); return ""; } TRACE("程序自身的全路径:%s\n",pFilePath); //获取版本信息大小 DWORD dwSize = GetFileVersionInfoSize(pFilePath,NULL); if (dwSize == 0) { TRACE("获取版本资源长度失败,文件不包含版本信息,错误码:%d\n",GetLastError()); return ""; } TCHAR *pBuf = (TCHAR *)malloc(dwSize + 1); memset(pBuf, 0, dwSize + 1); //获取版本信息 DWORD dwRtn = GetFileVersionInfo(pFilePath,NULL, dwSize, pBuf); if(dwRtn == 0) { TRACE("获取文件版本信息失败,错误码:%d\n",GetLastError()); return ""; } LPVOID lpBuffer = NULL; UINT uLen = 0; dwRtn = VerQueryValue(pBuf, TEXT("\\StringFileInfo\\080404b0\\FileVersion"), &lpBuffer, &uLen); if(dwRtn == 0) { delete pBuf; TRACE("请求的程序版本信息不存在。\n"); return ""; } int iLen = 2*wcslen((TCHAR*)lpBuffer);//CString,TCHAR汉字算一个字符,因此不用普通计算长度 char* chRtn = (char *)malloc(iLen+1); memset(chRtn,0,iLen+1); wcstombs(chRtn,(TCHAR*)lpBuffer,iLen+1);//转换成功返回为非负值 char* strVersion = (char *)malloc(iLen+1); memset(strVersion,0,iLen+1); strcpy(strVersion, chRtn); delete pBuf; TRACE("程序版本号:%s\n",strVersion); return strVersion; }
相关文章推荐
- ios 关于cocos2dx 3.2微信分享好友成功返回游戏卡死的情况处理
- Excel引用其它文件内容时如何用单元格内容做文件名
- python os.popen os.system
- 真正的爱情是不可以用金钱来衡量的
- Statspack安装配置及使用
- 百度搜索结果图文标识规则分析
- (c#)不同窗体间传值
- Keil MDK中的Code, RO-data , RW-data, ZI-data分别代表什么意思?
- [论文笔记4]Robust Object Detection via soft cascade
- 关于java.lang.UnsatisfiedLinkError的小案例
- Eye-Dome-Lighting (EDL)
- 数据库连接池c3p0配置文件
- jQuery源码分析之$.ajax方法
- Linux 运行进程实时监控pidstat命令详解
- generatorConfiguration配置文件及其详细解读
- SQL语句大全
- Nginx初学者指南
- TextureView+SurfaceTexture+OpenGL ES来播放视频(二)
- Hdu 5100 Chessboard
- MPEG4、XVID、AVC有什么区别