怎么在C++builder中获取设备的文件版本号
如何在C++builder中获取设备的文件版本号? - C++ Builder / Windows SDK/API
USB转UART的一个驱动,安装完毕后在C:\WINDOWS\SYSTEM32\DRIVERS\ser2pl
文件名是这个,先要读取这个文件中的 File Ver信息,这个文件一共有
产品版本
产品名称
公司
内部名称
文件版本
之类的信息
只要能读取到其中的文件信息即可,例如现在的版本信息是2.0.0.26 读到这个即可
会根据这个信息来判断当前的软件驱动版本是否需要更新
有哪位好心人,能指点下迷津.
最好有示例源码的.
拜谢,拜谢.
------解决方案--------------------
1. 读取文件
2. 解析字串
我也是新手。。就当是来接分的。。
------解决方案--------------------
------解决方案--------------------
你应该unit.h中加入函数声明,或者改为如下格式,在后面调用。
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) { } //---------------------------------------