获取可执行文件版本号(装载)

这个例子就是查询任何可执行文件的版本信息  
  并且   C++builder   和   VC   都通用,只需要把   AnsiString   替换成   CString   就行了。  
  下面是完整例子:  
  CString   IS_GetAppVersion(char*   AppName)  
  {  
      CString   AppVersion;  
      //AppVersion=IS_GetAppCreateTime(AppName);  
   
      DWORD   RessourceVersionInfoSize;  
      DWORD   JustAJunkVariabel;  
      char*   VersionInfoPtr;  
      struct   LANGANDCODEPAGE  
   {  
          WORD   wLanguage;  
          WORD   wCodePage;  
      }*TranslationPtr;  

      char*   InformationPtr;  
      UINT     VersionInfoSize;  
      char     VersionValue[255];  
   
      RessourceVersionInfoSize=GetFileVersionInfoSize(AppName,&JustAJunkVariabel);  
      if(0!=RessourceVersionInfoSize)  
      {  
          VersionInfoPtr = new char[RessourceVersionInfoSize];  
          if(GetFileVersionInfo(AppName,0,RessourceVersionInfoSize,VersionInfoPtr))  
          {  
              if(!VerQueryValue(   VersionInfoPtr, TEXT("VarFileInfo//Translation"),(LPVOID*)&TranslationPtr,&VersionInfoSize))  
              {  
                  delete[]   VersionInfoPtr;  
                  return   AppVersion;  
              }  
          }  
   
          //   retrieve   File   Description  
          wsprintf(VersionValue,TEXT("//StringFileInfo//%04x%04x//FileVersion"),TranslationPtr[0].wLanguage,TranslationPtr[0].wCodePage);  
          if(!VerQueryValue( VersionInfoPtr,VersionValue,(LPVOID*)&InformationPtr,&VersionInfoSize))  
          {  
              delete[]   VersionInfoPtr;  
              return   AppVersion;  
          }  
          if(strlen(InformationPtr)>0)   //Not   Null  
          {  
              AppVersion=CString(InformationPtr);  
          }  
          delete[]   VersionInfoPtr;  
      }  
      return AppVersion;  
  }  
   
  void   CGetFileVersionDlg::OnButton1()    
  {  
  CString   strVersion   =   IS_GetAppVersion("d://winnt//winhlp32.exe");  
  AfxMessageBox(strVersion);  
  }  

/*

 char AppName[MAX_PATH];
 GetModuleFileName(NULL, AppName, MAX_PATH);

 CString   AppVersion;  
 DWORD   RessourceVersionInfoSize;  
 DWORD   JustAJunkVariabel;  
 char*   VersionInfoPtr;  
 struct   LANGANDCODEPAGE   {  
  WORD   wLanguage;  
  WORD   wCodePage;  
 }   *TranslationPtr;  
 char*   InformationPtr;  
 UINT     VersionInfoSize;  
 char     VersionValue[255];  
   
 RessourceVersionInfoSize=GetFileVersionInfoSize(AppName,&JustAJunkVariabel);  
 if(0!=RessourceVersionInfoSize)  
 {  
  VersionInfoPtr=new   char[RessourceVersionInfoSize];  
  if(GetFileVersionInfo(AppName,0,RessourceVersionInfoSize,VersionInfoPtr))  
  {  
   if(!VerQueryValue(  
    VersionInfoPtr,  
    TEXT("VarFileInfo//Translation"),  
    (LPVOID*)&TranslationPtr,  
    &VersionInfoSize))  
   {  
    delete[]   VersionInfoPtr;  
    return FALSE;  
   }  
  }  
  
  //retrieve   File   Description  
  wsprintf(VersionValue,  
   TEXT("//StringFileInfo//%04x%04x//FileVersion"),  
   TranslationPtr[0].wLanguage,  
   TranslationPtr[0].wCodePage);  
  
  if(!VerQueryValue(  
   VersionInfoPtr,  
   VersionValue,  
   (LPVOID*)&InformationPtr,  
   &VersionInfoSize))  
  {  
   delete[]   VersionInfoPtr;  
   return FALSE;  
  }  
  if(strlen(InformationPtr)>0)   //Not   Null  
  {  
   AppVersion=CString(InformationPtr);  
  }  
  delete[] VersionInfoPtr;  
 }  
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值