首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么在C++builder中获取设备的文件版本号

2012-04-10 
如何在C++builder中获取设备的文件版本号? - C++ Builder / Windows SDK/APIUSB转UART的一个驱动,安装完毕

如何在C++builder中获取设备的文件版本号? - C++ Builder / Windows SDK/API
USB转UART的一个驱动,安装完毕后在C:\WINDOWS\SYSTEM32\DRIVERS\ser2pl
文件名是这个,先要读取这个文件中的 File Ver信息,这个文件一共有
产品版本
产品名称
公司
内部名称
文件版本
之类的信息


只要能读取到其中的文件信息即可,例如现在的版本信息是2.0.0.26 读到这个即可
会根据这个信息来判断当前的软件驱动版本是否需要更新


有哪位好心人,能指点下迷津.
最好有示例源码的.



拜谢,拜谢.

[解决办法]
1. 读取文件
2. 解析字串


我也是新手。。就当是来接分的。。
[解决办法]

C/C++ code
String __fastcall TForm8::GetFileVersion(String FileName) 
{
int iVerInfoSize;
char *pBuf;
AnsiString asVer="";
VS_FIXEDFILEINFO *pVsInfo;
unsigned int iFileInfoSize = sizeof( VS_FIXEDFILEINFO );

iVerInfoSize = GetFileVersionInfoSize(FileName.c_str(), NULL);
if(iVerInfoSize!= 0)
{
pBuf = new char[iVerInfoSize];
if(GetFileVersionInfo(FileName.c_str(),0, iVerInfoSize, pBuf ) )
  {
  if(VerQueryValue(pBuf, "\\",(void **)&pVsInfo,&iFileInfoSize))
  {
  asVer  = IntToStr( HIWORD(pVsInfo->dwFileVersionMS) )+".";
  asVer += IntToStr( LOWORD(pVsInfo->dwFileVersionMS) )+".";
  asVer += IntToStr( HIWORD(pVsInfo->dwFileVersionLS) )+".";
  asVer += IntToStr( LOWORD(pVsInfo->dwFileVersionLS) );
  }
  }
delete pBuf;
}
return asVer;
}

[解决办法]
你应该unit.h中加入函数声明,或者改为如下格式,在后面调用。
C/C++ code
//---------------------------------------#include <vcl.h>#pragma hdrstop#include "Unit1.h"//---------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------String GetFileVersion(String FileName){int iVerInfoSize;char *pBuf;AnsiString asVer="";VS_FIXEDFILEINFO *pVsInfo;unsigned int iFileInfoSize = sizeof( VS_FIXEDFILEINFO );iVerInfoSize = GetFileVersionInfoSize(FileName.c_str(), NULL);if(iVerInfoSize!= 0)  {  pBuf = new char[iVerInfoSize];  if(GetFileVersionInfo(FileName.c_str(),0, iVerInfoSize, pBuf ) )    {    if(VerQueryValue(pBuf, "\\",(void **)&pVsInfo,&iFileInfoSize))      {      asVer  = IntToStr( HIWORD(pVsInfo->dwFileVersionMS) )+".";      asVer += IntToStr( LOWORD(pVsInfo->dwFileVersionMS) )+".";      asVer += IntToStr( HIWORD(pVsInfo->dwFileVersionLS) )+".";      asVer += IntToStr( LOWORD(pVsInfo->dwFileVersionLS) );      }    }  delete pBuf;  }return asVer;}//--------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)        : TForm(Owner){}//--------------------------------------- 

热点排行