zoukankan      html  css  js  c++  java
  • Delphi获取程序的版本号、获取dll的版本号

    --------

    资料

    Delphi 获取自身软件的版本号 http://www.delphitop.com/html/hanshu/4627.html

    ------- 

    需要Uses

     SysUtils,windows,Classes;

     1 /// <summary>
     2   /// <remarks>
     3   ///  获取可执行文件的版本号;
     4   /// </remarks>
     5   /// <param name="sFileName">文件全称(要带上路径)</param>
     6   /// </summary>
     7   /// <returns>String</returns>
     8   function GetFileVersionNO(sFileName:string):string;
     9   /// <summary>
    10   /// <remarks>
    11   ///  获取DLL文件的版本号
    12   ///  可以传递多个文件名,文件名之间用英文下的逗号(,)隔开
    13   /// </remarks>
    14   /// <param name="sFileName">文件名(不要带路径)</param>
    15   /// <param name="sReturnValueSeparator">返回值的版本号分隔符(默认为英文状态下的逗号)</param>
    16   /// </summary>
    17   /// <returns>String</returns>
    18   function GetDLLVersionNOs(sFileNames:string; sReturnValueSeparator:String=','):string;
    19 
    20 
    21 
    22 
    23 function GetFileVersionNO(sFileName:string):string;
    24 var
    25   VerInfoSize,VerValueSize,Dummy:DWORD;
    26   VerInfo: Pointer;
    27   VerValue: PVSFixedFileInfo;
    28   Ver1,Ver2,Ver3,Ver4:Word;
    29 begin
    30   Result:='';
    31   if not FileExists(sFileName) then
    32     Exit;
    33   VerInfoSize:=GetFileVersionInfoSize(PChar(sFileName),Dummy);
    34   if VerInfoSize=0 then
    35     exit;
    36   GetMem(VerInfo,VerInfoSize);
    37   if not GetFileVersionInfo(PChar(sFileName),0,VerInfoSize,VerInfo) then
    38     exit;
    39   VerQueryValue(VerInfo, '', Pointer(VerValue), VerValueSize);
    40   with VerValue^ do
    41   begin
    42     Ver1:=dwFileVersionMS shr 16;
    43     Ver2:=dwFileVersionMS and $FFFF;
    44     Ver3:=dwFileVersionLS shr 16;
    45     Ver4:=dwFileVersionLS and $FFFF;
    46     Result:=inttostr(ver1)+'.'+inttostr(ver2)+'.'+inttostr(ver3)+'.'+inttostr(ver4);
    47   end;
    48   FreeMem(VerInfo,VerInfoSize);
    49 end;
    50 
    51 function GetDLLVersionNOs(sFileNames:string; sReturnValueSeparator:String=','):string;
    52 var
    53   vList:TStringList;
    54   i:Integer;
    55   vFrontPartPath,vFullPath, VerNo:string;
    56 begin
    57   Result:='';
    58   if sFileNames='' then
    59     Exit;
    60   if sReturnValueSeparator='' then
    61     Exit;
    62   if sReturnValueSeparator = '.'then //不允许设置点的分隔符
    63     Exit;
    64   if sReturnValueSeparator = ':'then //不允许设置点的分隔符
    65     Exit;
    66   vFrontPartPath:=ExtractFilePath(ParamStr(0));//Application.ExeName  //默认 目标文件都和程序在一个文件夹中
    67   try
    68     vList:=TStringList.Create;
    69     vList.Delimiter:=',';
    70     vList.DelimitedText:=sFileNames;
    71     for i:=0 to vList.Count - 1 do
    72     begin
    73       vFullPath:=vFrontPartPath+vList.Strings[i]+'.dll';
    74       VerNo:=GetFileVersionNO(vFullPath);
    75       if VerNo='' then
    76         VerNo:='NaN';
    77 
    78       Result:=Result+sReturnValueSeparator+vList.Strings[i]+'.dll   Version Number: '+VerNo;
    79     end;
    80     if Result<>'' then
    81     begin
    82       Delete(Result,1,Length(sReturnValueSeparator));
    83     end;
    84   finally
    85     vList.Clear;
    86     vList.Free;
    87   end;
    88 end;

    调用代码:

    1 GetDLLVersionNOs('DLLName01,DLLName02,DLLName03',#13#10);
  • 相关阅读:
    对于Volatile的认识
    TextView图文混排
    android自定义控件
    我最喜欢的SQL分页查询方法
    nopCommerce开发者指南(十):开发者怎样为nopCommerce 项目贡献代码?
    nopCommerce开发者指南(九):设置 API
    nopCommerce开发者指南(八):暴露和处理事件
    nopCommerce开发者指南(七):计划任务
    nopCommerce开发者指南(六):数据验证
    nopCommerce开发者指南(五):怎样注册新路由?
  • 原文地址:https://www.cnblogs.com/dmqhjp/p/15323496.html
Copyright © 2011-2022 走看看