Bir programın sürümünü nasıl alırım?

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
csyasar
Üye
Mesajlar: 646
Kayıt: 25 Şub 2004 10:14
Konum: Tokat

Bir programın sürümünü nasıl alırım?

Mesaj gönderen csyasar »

Kod: Tümünü seç

procedure GetBuildInfo(const AppName: string;
                       var V1, V2, V3, V4: Word);
var
   VerInfoSize,
   VerValueSize,
   Dummy : DWORD;
   VerInfo : Pointer;
   VerValue : PVSFixedFileInfo;
begin
  VerInfoSize := GetFileVersionInfoSize(PChar(AppName), Dummy);
  GetMem(VerInfo, VerInfoSize);
  GetFileVersionInfo(PChar(AppName), 0, VerInfoSize, VerInfo);
  VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
   with VerValue^ do
   begin
     V1 := dwFileVersionMS shr 16;
     V2 := dwFileVersionMS and $FFFF;
     V3 := dwFileVersionLS shr 16;
     V4 := dwFileVersionLS and $FFFF;
   end;
   FreeMem(VerInfo, VerInfoSize);
end;

// Kullanimi:
procedure TForm1.Button1Click(Sender: TObject);
var v1, v2, v3, v4: word;
begin
  GetBuildInfo('C:\windows\notepad.exe', v1, v2, v3, v4);
  Label1.Caption := Format('%d.%d.%d.%d', [V1, V2, V3, V4]);
end;
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

Diğer elde edilebilir bilgiler, test edildi, delphi 7

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TFileVersionInfo = record
    fCompanyName,
    fFileDescription,
    fFileVersion,
    fInternalName,
    fLegalCopyRight,
    fLegalTradeMark,
    fOriginalFileName,
    fProductName,
    fProductVersion,
    fComments: string;
  end;


type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  FileVersionInfo: TFileVersionInfo;

implementation

{$R *.dfm}
procedure GetAppVersionInfo(sAppNamePath: string);
var
  VerSize: integer;
  VerBuf: PChar;
  VerBufValue: pointer;
  {$IFDEF Delphi3Below}
  VerHandle: integer;
  VerBufLen: integer;
  {$ELSE}
  VerHandle: cardinal;
  VerBufLen: cardinal;
  {$ENDIF}
  VerKey: string;

  function GetInfo(ThisKey: string): string;
  begin
    Result := '';
    VerKey := '\StringFileInfo\' + IntToHex(loword(integer(VerBufValue^)), 4) +
    IntToHex(hiword(integer(VerBufValue^)), 4) + '\' + ThisKey;
    if VerQueryValue(VerBuf, PChar(VerKey), VerBufValue, VerBufLen) then
      Result := StrPas(VerBufValue);
  end;

  function QueryValue(ThisValue: string): string;
  begin
    Result := '';
    if GetFileVersionInfo(PChar(sAppNamePath), VerHandle, VerSize, VerBuf) and
      VerQueryValue(VerBuf, '\VarFileInfo\Translation', VerBufValue, VerBufLen) then
      Result := GetInfo(ThisValue);
  end;

begin
  if sAppNamePath = '' then
    sAppNamePath := Application.ExeName;
  VerSize := GetFileVersionInfoSize(PChar(sAppNamePath), VerHandle);
  VerBuf := AllocMem(VerSize);
  try
    FileVersionInfo.fCompanyName      := QueryValue('CompanyName');
    FileVersionInfo.fFileDescription  := QueryValue('FileDescription');
    FileVersionInfo.fFileVersion      := QueryValue('FileVersion');
    FileVersionInfo.fInternalName     := QueryValue('InternalName');
    FileVersionInfo.fLegalCopyRight   := QueryValue('LegalCopyRight');
    FileVersionInfo.fLegalTradeMark   := QueryValue('LegalTradeMark');
    FileVersionInfo.fOriginalFileName := QueryValue('OriginalFileName');
    FileVersionInfo.fProductName      := QueryValue('ProductName');
    FileVersionInfo.fProductVersion   := QueryValue('ProductVersion');
    FileVersionInfo.fComments         := QueryValue('Comments');
  finally
    FreeMem(VerBuf, VerSize);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 if opendialog1.Execute then
 begin
    GetAppVersionInfo(opendialog1.FileName);
    showmessage('Özellikler : ' + #13+
                '-----------------------------------' + #13+
                'Şirket İsmi       : ' + FileVersionInfo.fCompanyName + #13+
                'Dosya Açıklaması  : ' + FileVersionInfo.fFileDescription + #13+
                'Dosya Versiyonu  : ' + FileVersionInfo.fFileVersion + #13+
                'Ürün Versiyonu  : ' + FileVersionInfo.fProductVersion + #13
                );
 end
end;

end.
Kaynak
.-.-.-.-.-.-.-. ^_^
Cevapla