CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

如何获得某个exe的版本号和创建日期?

楼主bisc_sunny(总是当时携手处,游遍芳丛)2002-04-09 12:20:03 在 Delphi / VCL组件开发及应用 提问

rt  
   
  100分 问题点数:100、回复次数:7Top

1 楼dancemaple(枫之舞)回复于 2002-04-09 12:25:00 得分 30

获取文件的创建日期可以用API  
  BOOL   GetFileTime(  
   
          HANDLE   hFile, //   identifies   the   file    
          LPFILETIME   lpCreationTime, //   address   of   creation   time    
          LPFILETIME   lpLastAccessTime, //   address   of   last   access   time      
          LPFILETIME   lpLastWriteTime   //   address   of   last   write   time    
        );Top

2 楼rongercao(草哥)回复于 2002-04-09 12:31:47 得分 0

举例说明!Top

3 楼zx_wang(wzx)回复于 2002-04-09 12:35:17 得分 30

1.FindFirstTime  
  2.GetFileVersionInfoSize和GetFileVersionInfoTop

4 楼Liusp(夜深千帐灯)回复于 2002-04-09 12:46:14 得分 20

2.FileAgeTop

5 楼snake_eye(别人都叫我老李)回复于 2002-04-09 12:49:14 得分 0

关注Top

6 楼belllab(菜鸟)回复于 2002-04-09 13:27:42 得分 20

Type   TFileVersionInfo   =   Record  
      FixedInfo:TVSFixedFileInfo;         {版本信息}  
      CompanyName:String;                         {公司名称}  
      FileDescription:String;                 {说明}  
      FileVersion:String;                         {文件版本}  
      InternalName:String;                       {内部名称}  
      LegalCopyright:String;                   {版权}  
      LegalTrademarks:String;                 {合法商标}  
      OriginalFilename:String;               {源文件名}  
      ProductName:String;                         {产品名称}  
      ProductVersion:String;                   {产品版本}  
      Comments:String;                               {备注}  
      LocalPort:String;                             {Local   UDP_Message   Port}  
  end;  
   
   
  Function   GetFileVerInfo(ExeFileName   :Pchar;var   VerSionInfo:TFileVersionInfo):Boolean;  
  var  
      dwHandle,   dwVersionSize       :   DWORD;  
      Find                                             :   String;  
      pcBuffer                                     :   PChar;  
      pTemp                                           :   Pointer;  
      FileVersionInfo                       :   TVSFixedFileInfo;  
  begin  
      Find   :=   '\';  
      dwVersionSize   :=   GetFileVersionInfoSize(   PChar(ExeFilename),dwHandle   );  
      if   dwVersionSize   =   0   then     begin  
          Result:=False;  
          Exit;  
      end;  
      GetMem(   pcBuffer,   dwVersionSize   );  
      if   not   GetFileVersionInfo(   PChar(ExeFilename),dwHandle,dwVersionSize,pcBuffer   )   then   begin  
          FreeMem(pcBuffer);  
          Result:=False;  
          Exit;  
      end;  
      if   not   VerQueryValue(   pcBuffer,PChar(Find),pTemp,dwVersionSize   )   then   begin  
          FreeMem(pcBuffer);  
          Result:=False;  
          Exit;  
      end;  
      FileVersionInfo:=PVSFixedFileInfo(pTemp)^;  
      With   FileVersionInfo   do   begin  
          VersionInfo.FixedInfo.dwSignature:=dwSignature;  
          VersionInfo.FixedInfo.dwStrucVersion:=dwStrucVersion;  
          VersionInfo.FixedInfo.dwFileVersionMS:=dwFileVersionMS;  
          VersionInfo.FixedInfo.dwFileVersionLS:=dwFileVersionLS;  
          VersionInfo.FixedInfo.dwProductVersionMS:=dwProductVersionMS;  
          VersionInfo.FixedInfo.dwProductVersionLS:=dwProductVersionLS;  
          VersionInfo.FixedInfo.dwFileFlagsMask:=FileVersionInfo.dwFileFlagsMask;  
          VersionInfo.FixedInfo.dwFileFlags:=fileVersionInfo.dwFileFlags;  
          VersionInfo.FixedInfo.dwFileOS:=FileVersionInfo.dwFileOS;  
          VersionInfo.FixedInfo.dwFileType:=FileVersionInfo.dwFileType;  
          VersionInfo.FixedInfo.dwFileSubtype:=FileVersionInfo.dwFileSubtype;  
          VersionInfo.FixedInfo.dwFileDateMS:=FileVersionInfo.dwFileDateMS;  
          VersionInfo.FixedInfo.dwFileDateLS:=FileVersionInfo.dwFileDateLS;  
      end;  
      Find   :=   '\StringFileInfo\080403A8\';  
      if   VerQueryValue(   pcBuffer,PChar(Find+'CompanyName'),pTemp,dwVersionSize   )   then  
          VersionInfo.CompanyName:=PChar(pTemp)  
      else   begin  
          Find   :=   '\StringFileInfo\040904E4\';  
          if   VerQueryValue(   pcBuffer,PChar(Find+'CompanyName'),pTemp,dwVersionSize   )   then  
              VersionInfo.CompanyName:=PChar(pTemp)  
          else   begin  
              Result:=False;  
              Exit;  
          end;  
      end;  
      if   VerQueryValue(   pcBuffer,PChar(Find+'FileDescription'),pTemp,dwVersionSize   )   then  
          VersionInfo.FileDescription:=PChar(pTemp);  
   
      if   VerQueryValue(   pcBuffer,PChar(Find+'FileVersion'),pTemp,dwVersionSize   )   then  
          VersionInfo.FileVersion:=PChar(pTemp);  
   
      if   VerQueryValue(   pcBuffer,PChar(Find+'InternalName'),pTemp,dwVersionSize   )   then  
          VersionInfo.InternalName:=PChar(pTemp);  
   
      if   VerQueryValue(   pcBuffer,PChar(Find+'LegalCopyright'),pTemp,dwVersionSize   )   then  
          VersionInfo.LegalCopyright:=PChar(pTemp);  
   
      if   VerQueryValue(   pcBuffer,PChar(Find+'LegalTrademarks'),pTemp,dwVersionSize   )   then  
          VersionInfo.LegalTrademarks:=PChar(pTemp);  
   
      if   VerQueryValue(   pcBuffer,PChar(Find+'OriginalFilename'),pTemp,dwVersionSize   )   then  
          VersionInfo.OriginalFilename:=PChar(pTemp);  
   
      if   VerQueryValue(   pcBuffer,PChar(Find+'ProductName'),pTemp,dwVersionSize   )   then  
          VersionInfo.ProductName:=PChar(pTemp);  
   
      if   VerQueryValue(   pcBuffer,PChar(Find+'ProductVersion'),pTemp,dwVersionSize   )   then  
          VersionInfo.ProductVersion:=PChar(pTemp);  
   
      if   VerQueryValue(   pcBuffer,PChar(Find+'Comments'),pTemp,dwVersionSize   )   then  
          VersionInfo.Comments:=PChar(pTemp);  
      if   VerQueryValue(   pcBuffer,PChar(Find+'LocalPort'),pTemp,dwVersionSize   )   then  
          VersionInfo.LocalPort:=PChar(pTemp)  
      else  
          VersionInfo.LocalPort:='66500';  
      FreeMem(pcBuffer   );  
      Result:=True;  
  end;  
  Top

7 楼maoke000(老茂)回复于 2002-04-09 15:14:08 得分 0

保留,可能对我有用。Top

相关问题

  • 怎样给EXE或DLL加上版本号
  • ???如何取得其它*.EXE和*.DLL文件的版本号???
  • 怎样获得一个exe或者dll文件的版本号?
  • 如何获得EXE文件的创建日期?
  • 请问怎样获得硬盘上一个.exe文件的版本号?
  • 怎样获得VB编译后生成的exe文件的版本号。
  • 如何得到.exe,.dll文件的版本号,公司信息等
  • 用csc编译 exe 和 dll 文件时如何给文件加上版本号?
  • 文件版本号??????
  • 文件的创建日期

关键词

  • 版本
  • 文件
  • lpfiletime
  • tfileversioninfo
  • 日期
  • 名称
  • 产品
  • address
  • time
  • var

得分解答快速导航

  • 帖主:bisc_sunny
  • dancemaple
  • zx_wang
  • Liusp
  • belllab

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo