EVC获取文件的版本信息的方法

原创 2007年09月21日 16:29:00

  
 /**********获取、显示版本信息 开始*****************/
 TCHAR* fileName =_T("//Windows//NOTES.EXE");             //指定要获取信息的文件路径
 TCHAR *productVersion;         //用于存放产品版本号
  TCHAR SubBlock[100];          //用于存放要查询的信息名称,相当于数据库中要查询的某个属性名
 unsigned int productVersionLen;//用于存放获取的产品版本号的长度
 unsigned int cbTranslate;//用于存放文件的language and code pages的大小,这是信息版本的必要子项
 DWORD versionSize;//文件版本的全部信息的大小

////////////////////获取文件版本的全部信息的大小,开始////////////////////
 if((versionSize = GetFileVersionInfoSize(fileName,NULL))==0)
 {
  return;
 }
////////////////////获取文件版本的全部信息的大小,结束////////////////////


 LPVOID versionInfo = new DWORD[versionSize];     //为versionInfo 分配存储空间

//////////////////////////////获取文件版本的全部信息,开始/////////////////////////////////////
 if(GetFileVersionInfo(fileName,NULL,versionSize,versionInfo)==0)
 {
  return;
 }
 //////////////////////////////获取文件版本的全部信息,结束/////////////////////////////////////

 //定义language and code page结构体,方便查询
 struct LANGANDCODEPAGE
 {
  WORD wLanguage;
  WORD wCodePage;
 } *lpTranslate;  //指向结构体的指针

.
 memset(SubBlock,'0',sizeof(SubBlock));//清空内存

 //获取文件的language and code pages,保存在lpTranslate结构体中,开始//
 VerQueryValue(versionInfo,
              TEXT("//VarFileInfo//Translation"),
              (LPVOID*)&lpTranslate,
              &cbTranslate);
 //获取文件的language and code pages,保存在lpTranslate结构体中,结束//

 /****************************获取ProductVersion,开始****************/
 //设置具体要获取的信息的名称,用SubBlock存储//
 wsprintf( SubBlock,
            TEXT("//StringFileInfo//%04x%04x//ProductVersion"),
            lpTranslate->wLanguage,
            lpTranslate->wCodePage);
 
 //获取ProductVersion,保存在productVersion中//
 VerQueryValue(versionInfo,
                SubBlock,
                (LPVOID*)&productVersion,
                &productVersionLen);
 /**********************获取ProductVersion,结束******************/

delete[] versionInfo;
delete lpTranslate;

MessageBox(productVersion,_T("ProductVersion"),MB_OK);
 /**********获取、显示版本信息 开始*****************/

本程序只获得了版本信息中的ProductVersion子项,同理可获得其他子项。

获取exe文件版本信息

  • 2011年03月11日 09:21
  • 30KB
  • 下载

获取文件版本信息

  • 2014年05月21日 16:29
  • 1.45MB
  • 下载

delphi 获取Exe或DLL的文件版本信息

unit VersionInfo; {* 获取应用程序版本类单元 } interface uses Windows,Types,SysUtils,Dialogs; type TExeVers...
  • cmd9x
  • cmd9x
  • 2014年01月16日 17:26
  • 753

获取 文件的 版本信息 及描述

  • 2012年12月01日 10:09
  • 165KB
  • 下载

GetFileVersionInfo 获取文件版本信息错误原因分析

概述 这两天遇到一个奇怪的问题:在一个进程中,通过GetFileVersionInfo去获取一个绝对路径文件的版本号时, 实际路径对应文件根本不存在,却获取到了版本号信息。在仔细分析GetFil...

win32获取文件版本信息

1.使用GetFileVersionInfoSize函数获取版本信息大小

获取文件的版本信息和修改时间

CFile file; BOOL bFile = file.Open(csPath, CFile::modeRead); if ( !bFile ) { return false; } ...

python学习四:import模块方法、可变参数、字典key判断、版本信息获取、列表解析、

1. import模块方法 下面将具体介绍几种常用情况: (1)主程序与模块程序在同一目录下: 如下面程序结构: `-- src     |-- mod1.py     `-- test1.py   ...

使用Windows API实现运行时动态获取程序文件版本信息

文件版本信息的存在使得应用程序正确的安装文件变得简单,并且使安装程序能够分析文件的当前安装状态。通常,版本信息应该包括文件的版本号、文件功能描述以及文件作者等多项重要内容。   在应用层面上...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:EVC获取文件的版本信息的方法
举报原因:
原因补充:

(最多只允许输入30个字)