首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>C/C++>开发工具>如何在VC2008中编程实现获取程序的版本号?
如何在VC2008中编程实现获取程序的版本号?
来源: 发布时间:2008-11-21 发布人: 浏览: 人次   字体: [ ]  

如何在VC2008中编程实现获取程序的版本号?
// 取进程版本号码
// VC 2008
// (控制台程序的版本资源需要手动插入)

#include "stdafx.h"
#include <windows.h>
#pragma comment(lib, "Version.lib")

DWORD  GetVer(WORD& wVer1, WORD& wVer2, WORD& wVer3, WORD& wVer4);

int _tmain(int argc, _TCHAR* argv[])
{
 WORD v1, v2, v3, v4;
 DWORD dwA = GetVer(v1, v2, v3, v4);

 printf("Ver: %d.%d.%d.%d\n", v1, v2, v3, v4);

 return 0;
}

// 取进程版本号
DWORD  GetVer(WORD& wVer1, WORD& wVer2, WORD& wVer3, WORD& wVer4)
{
 wVer1 = 0;
 wVer2 = 0;
 wVer3 = 0;
 wVer4 = 0;

 // 进程文件名
 TCHAR   szPath[MAX_PATH]   =   {0};  
 GetModuleFileName(NULL, szPath, MAX_PATH);  

 if(ERROR_INSUFFICIENT_BUFFER == GetLastError())
 {
  // 路径太长
  return FALSE;
 }

 // 信息块大小
 DWORD dwFileVersionInfoSize = GetFileVersionInfoSize(szPath, NULL);

 if(dwFileVersionInfoSize == 0)
 {
  // 没有版本信息
  return FALSE;
 }

 BYTE lpData[4096] = {0};
 if(dwFileVersionInfoSize > sizeof(lpData))
 {
  // 信息太多
  // (建议lpData使用根据dwFileVersionInfoSize动态分配的内存)
  return FALSE;
 }

 // 获取版本信息
 if (! GetFileVersionInfo(szPath, NULL, dwFileVersionInfoSize, lpData))
 {
  return FALSE;
 }

 // 查询版本号信息
 UINT unInfoLen = 0;
 VS_FIXEDFILEINFO* vsFileInfo = 0;
 if (! VerQueryValue(lpData, _T("\\"), (LPVOID*)&vsFileInfo, &unInfoLen))
 {
  return FALSE;
 }

 if (unInfoLen != sizeof(VS_FIXEDFILEINFO))
 {
  return FALSE;
 }

 // 版本信息 a.b.c.d
 wVer1 = HIWORD(vsFileInfo->dwFileVersionMS);
 wVer2 = LOWORD(vsFileInfo->dwFileVersionMS);
 wVer3 = HIWORD(vsFileInfo->dwFileVersionLS);
 wVer4 = LOWORD(vsFileInfo->dwFileVersionLS);
 return TRUE;
}


相 关 文 章   发布商链接
·怎样修改VC项目名?
·图解VC2005之创建解决方案祥细步骤
·如何在Tree空件上实现点右健选中Item...
·如何在程序中获得其他程序的图标?
·VC怎样加载其他的应用程序?
·Visual C++编程技巧实用小结14例
·Visual C++开发工具与调试技巧整理
·Visual C++设计超强仿QQ自动伸缩窗口
·在VC6.0下配置boost库使用正则表达式
·VC实现多文件文本替换的解决方案
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·vc++实现下载工具软件flashge...
·VC获取目录的两种方法代码
·VC获得当前系统是什么语言版...
·双击VC对话框提示cannot add ...
·VC操作Excel和运用ADO操作数...
·vc6.0实现鼠标显示按钮功能提
·VC++更改系统IP地址的方法代...
·如何消除vc屏幕闪烁的方法?
·在CListView控件添加右键弹出
·MFC中利用CMenu类动态添加弹...
·详解如何在VC++下动态调整水...
·如何在VC++下完全动态生成水...
·C++builder调试时提示找不到b...
·vc实现定时执行任务的两种方...
·VC使用定时机制的几种方法
热 门 文 章
·VC++更改系统IP地址的方法代...
·图解VC2005之创建解决方案祥...
·在VC中创建DLL文件的方法步骤...
·VC使用定时机制的几种方法
·Vc中自定义消息及其触发使用
·VC制作使用图片做为背景的对...
·双击VC对话框提示cannot add ...
·在CListView控件添加右键弹出...
·如何在VC++下完全动态生成水...
·vc实现定时执行任务的两种方...
·如何消除vc屏幕闪烁的方法?
·C++builder调试时提示找不到b...
·vc++实现下载工具软件flashge...
·实例讲解vc调用winrar进行文...
·MFC中利用CMenu类动态添加弹...
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .