PDA

Ver la Versión Completa : versión de una dll


ingacg
27-05-2003, 20:07:21
Hola, de casualidad, alguno de ustedes sabe como puedo obtener la versión de una dll?.

de antemano, gracias.

__cadetill
27-05-2003, 23:50:21
Para un exe te valdria esta funcion


function GetAppVersion : string;
var Size, Size2: DWord;
Pt, Pt2: Pointer;
begin
Size := GetFileVersionInfoSize(PChar (ParamStr (0)), Size2);
if Size > 0 then
begin
GetMem (Pt, Size);
try
GetFileVersionInfo (PChar (ParamStr (0)), 0, Size, Pt);
VerQueryValue (Pt, '\', Pt2, Size2);
with TVSFixedFileInfo (Pt2^) do
begin
Result:= ' Versión '+
IntToStr (HiWord (dwFileVersionMS)) + '.' +
IntToStr (LoWord (dwFileVersionMS)) + ' Build ' +
IntToStr (HiWord (dwFileVersionLS)) + '.' +
IntToStr (LoWord (dwFileVersionLS));
end;
finally
FreeMem (Pt);
end;
end;
end;


Nunca lo he probado en una dll, pero... no estaria de menos probarlo. Si lo pruebas y te sirve, ya nos lo diras ;)

ingacg
28-05-2003, 00:45:25
Ok, mil Gracias Cadetelli, lo voy a probar y con gusto les aviso!

jafl1965
04-06-2003, 02:07:31
Bueno Ingacg, y por fin sirvió para una dll?

ingacg
04-06-2003, 17:07:43
Ups!, siento decepcionarlos, pero nop..., de hecho creo que no fuí muy explícito...hagan de cuenta que yo voy a cargar una dll con un loadlibrary('c:\MIDll.dll'), pero necesito saber la versión de la dll que quiero cargar (en ésta caso le versión de c:\MIDll.dll), para que en base a la versión haga los ajustes en mi programa..

Saludos a todos

delphi.com.ar
04-06-2003, 17:18:00
Yo he probado este código, que es el que ofrece cadetill con algún cambio sutil, y funciona.

function GetFileVersion( AFileName : String ) : string;
var
Size,
Size2 : DWord;
Pt,
Pt2 : Pointer;
begin
Size := GetFileVersionInfoSize(PChar(AFileName), Size2);
if Size > 0 then
begin
GetMem(Pt, Size);
try
GetFileVersionInfo (PChar(AFileName), 0, Size, Pt);
VerQueryValue (Pt, '', Pt2, Size2);
with TVSFixedFileInfo (Pt2^) do
Result:= Format('Versión %d.%d Build %d.%d', [ HiWord(dwFileVersionMS),
LoWord(dwFileVersionMS),
HiWord(dwFileVersionLS),
LoWord(dwFileVersionLS)] );
finally
FreeMem (Pt);
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := GetFileVersion( 'C:\WINDOWS\Moricons.dll' );
end;

ingacg
04-06-2003, 17:42:25
Orale!, si funcionó, perfectamente!

Les agradezco a delphi.com.ar y a Cadetelli, por tomarse la molestia de contestar esta duda.

Saludos desde México

tango01
24-06-2003, 16:17:45
siguiendo con este tema.....

como puedo saber si una dll esta registrada en windows.
y como puedo saber el path a la dll registrada.

llendo a lo concreto.

mi programa necesita, por ejemplo midas.dll pero yo antes de registrar mi dll quisiera saber si ya esta registrada... para luego obtener el path y la version y en base a esto decidir si registrar o no la version de la dll que trae mi programa....

muy amables por su ayuda..

gracias de anteman.

delphi.com.ar
24-06-2003, 17:49:05
Ante todo te comento que desconozco si MIDAS necesita estar registrada pero te cuento que no todas las DLLs se registran, si quieres aquí (http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q249/8/73.ASP&NoWebContent=1) te cuentan que DLL´s son "registrables" y no son mas que DLL´s Win32, con un juego específico de procedimientos y funciones que les da esa flexibilidad y funcionalidad. Bueno la idea de registrar los Objetos COM es que podamos acceder a estos por su GUID, y el nombre de del archivo que contiene estos objetos puede cambiar, te recomiendo leer la ayuda de funciones como QueryPathOfRegTypeLib y LoadRegTypeLib.



Saludos!