Ver Mensaje Individual
  #8  
Antiguo 24-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.098
Reputación: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Pero, ¿usas directamente la API de Windows o la función de la unidad SysUtils?
// Saludos
Ahí me has pillado... voy a ver...
Es la que está implementada en 'windows'; y es este código horroroso:

Código Delphi [-]
function getmVersion(cExe:string='') : string;
var
  InfoSize, H, RsltLen: cardinal;
  VersionBlock: pointer;
  Rslt: PVSFixedFileInfo;
begin
  if (cExe='') or (not FileExists(cExe)) then
    cExe := Application.ExeName;
  //
  //InfoSize := GetFileVersionInfoSize(PChar(Application.ExeName), H);
  InfoSize := GetFileVersionInfoSize(pChar(cExe), H);
  VersionBlock := AllocMem(InfoSize);
  try
    //GetFileVersionInfo(pChar(Application.ExeName), H, InfoSize, VersionBlock);
    GetFileVersionInfo(pChar(cExe), H, InfoSize, VersionBlock);
    VerQueryValue(VersionBlock, '\', Pointer(Rslt), RsltLen);
    result := Format('%d.%d.%d.%d', [
    Rslt.dwProductVersionMS div 65536,
    Rslt.dwProductVersionMS mod 65536,
    Rslt.dwProductVersionLS div 65536,
    Rslt.dwProductVersionLS mod 65536]);
  finally
    FreeMem(VersionBlock);
  end;
end;
Responder Con Cita