uses
FileUtil, fileinfo;
......
TDllInfo = class(TObject)
FileName : String;
ModulName : String;
Info : string;
end;
.......
procedure FindModules(const aDir: string; var aList: TstringList);
var
i: Integer;
FileVerInfo:TFileVersionInfo;
FileName, ModulName: String;
aDllInfo : TDllInfo;
begin
FileVerInfo:= TFileVersionInfo.Create(nil);
try
with FindAllFiles(aDir,'*.dll', false) do begin
for i:= 0 to Count-1 do begin
FileName := Strings[i];
// FileName := paramstr(0); //ChangeFileExt(FileName,'.exe');
FileVerInfo.FileName:= FileName;
try
FileVerInfo.ReadFileInfo;
ModulName:= FileVerInfo.VersionStrings.Values['InternalName'];
if ModulName <> '' then begin
aDllInfo := TDllInfo.Create;
aDllInfo.FileName:= Strings[i];
aDllInfo.ModulName:= ModulName;
aDllInfo.Info:= FileVerInfo.VersionStrings.Values['FileDescription'];
aList.AddObject(aDllInfo.FileName,aDllInfo);
end;
finally
; // nothing to do
end;
end;
end;
finally
FileVerInfo.Free;
end;
end;