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

如何在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)
{
}
//---------------------------------------