Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FreePascal [gelöst] Programmversion von anderen Prgs auslesen (Unix) (https://www.delphipraxis.net/204439-%5Bgeloest%5D-programmversion-von-anderen-prgs-auslesen-unix.html)

DelTurbo 28. Mai 2020 15:26


[gelöst] Programmversion von anderen Prgs auslesen (Unix)
 
Hallo,
ich habe ein eventuell nur kleines Problem. Ich müsste die Versionsnummer von einem anderen Programm auslesen, welches auch unter FreePascal (Lazarus bzw. CodeTyphon) erstellt wurde.

Innerhalb meines Programms kann ich "meine" Versionnummer mit dieser Unit lesen: Link

Aber ich finde leider nicht wie ich die Versionsnummer eines anderen Programms was ich auch geschrieben habe auslesen kann. Natürlich sind die anderen Programme auch mit Lazarus bzw. CodeTyphon erstellt worden und die Daten unter Projekteinstellungen/Versionsinformation sind eingestellt.

Da ich unter Unix innerhalb meines Programms die Version lesen kann, müsste ich doch auch irgendwie an die Nummer eines anderen Programms kommen. Natürlich habe ich schon gegoogelt aber leider nichts gefunden.

Vielen dank im voraus

himitsu 28. Mai 2020 15:42

AW: Programmversion von anderen Prgs auslesen (Unix)
 
Du hast ein nur
Delphi-Quellcode:
procedure Load(Instance: THandle);
und das will ein Handle.

Im Windows gibt es z.B. MSDN-Library durchsuchenLoadLibraryEx mit LOAD_LIBRARY_AS_IMAGE_RESOURCE oder LOAD_LIBRARY_AS_DATAFILE,
womit man eine EXE, DLL oder BPL in seinen Prozess laden kann, ohne deren Code auszuführen.

Sowas müsstest du für Unix finden,
aber ich bin mir nicht sicher, ob im Unix die Dateien auch das PE-Format benutzen (glaub nicht .. ist wohl ELF oder so)
und ob somit dort so garnicht die Version ausgelesen werden kann, weil sie anders gespeichert ist.
Aber wenn/da das funktioniert, mußt du wohl nur noch rausfinden wie du an das Handle kommst.

DelTurbo 28. Mai 2020 16:22

[gelöst] Programmversion von anderen Prgs auslesen (Unix)
 
Lösung: (Ja, ich habs gefunden :-D)
Delphi-Quellcode:
function TMyApplication.GetProgramVersion(ExeFileName: String) : String;
var
  FileVerInfo: TFileVersionInfo;
begin
    FileVerInfo := TFileVersionInfo.Create(nil);
    try
      FileVerInfo.FileName := ExeFileName;
      FileVerInfo.ReadFileInfo;
      Result := FileVerInfo.VersionStrings.Values['FileVersion'];
    finally
      FileVerInfo.Free;
    end;
end;
In uses muss noch resource, elfreader, versiontypes,versionresource,FileInfo

Gruß und trotzdem danke!
Gefunden auf Link


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz