程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 獲得文件的版本信息

獲得文件的版本信息

編輯:關於C++

我們在許多情況下,(如編制安裝程序時),需要獲得應用程序的版本信息,以決定是否更新文件。最簡單的辦法是比較文件的生成日期。其實,對於EXE、DLL、OCX等類型的文件有更加准確的方法獲得文件的版本信息。利用API函數GetFileVersionInfo,GetFileVersionInfoSize,VerQueryValue,我們可以很方便地獲得文件的一系列信息。

以下使用C++ Builder 4為例演示具體的操作:

首先,建立一個新項目,在主窗口上放置一個Edit控件,一個Button控件。

然後,在Button的點擊事件中加入如下代碼:

void __fastcall TForm1::
Button1Click(TObject *Sender)
{
//首先獲得版本信息資源的長度
DWORD dwHandle,InfoSize;
InfoSize = GetFileVersionInfoSize(Edit1- >Text.c_str(),&dwHandle);
//將版本信息資源讀入緩沖區
char *InfoBuf = new char[InfoSize];
GetFileVersionInfo(Edit1->Text.c_str(),0,InfoSize,InfoBuf);
//獲得生成文件使用的代碼頁及字符集信息
char *pInfoVal;
unsigned int dwInfoValSize;
VerQueryValue(InfoBuf,"\\VarFileInfo\\Translation",&((void *)pInfoVal), &dwInfoValSize);
AnsiString V="\\StringFileInfo\\"+IntToHex(*((unsigned short int *)
pInfoVal),4)+IntToHex(*((unsigned short int *) &pInfoVal[2]),4)
+"\\FileVersion";
//獲得具體的版本號
VerQueryValue(InfoBuf, V.c_str(),&((void *)pInfoVal),&dwInfoValSize);
Edit1->Text = AnsiString(pInfoVal).SetLength(dwInfoValSize-1);
delete InfoBuf;
}

以上,僅示范如何獲得文件版本。分別替換FileVersion為CompanyName,FileDescription,InternalName,LegalCopyright,OriginalFilename,ProductName,ProductVersion可以得到文件的公司名稱,文件描述,內部名稱,合法版權,原始文件名,產品名稱,產品版本等一系列信息.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved