Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Win & Dos Versions Nummern abfragen.

  Alt 14. Mär 2018, 19:18
für Windows fragt man am besten die Version der Datei kernel32.dll ab
Das habe ich nun auch versucht, mit der GetFileVersionInfo funktion.
Beim Zugriff auf kernel32.dll gibt mir die funktion False zurück, GetLastError deutet auf "Datei nicht gefunden" hin, ich übergebe den kompletten Pfad. Irgendwas mache ich dabei falsch.

So hier in etwa verarbeite ich es: (Code nicht von mir)
Delphi-Quellcode:
function GetVersionInfo(NameApp, VerOpt: String): String;
var
 dump: DWORD;
 size: integer;
 buffer: PChar;
 VersionPointer, TransBuffer: PChar;
 Temp: integer;
 CalcLangCharSet: string;
begin
 size := GetFileVersionInfoSize(PChar(NameApp), dump);
 buffer := StrAlloc(size+1);
  try
   GetFileVersionInfo(PChar(NameApp), 0, size, buffer);
   VerQueryValue(buffer, 'VarFileInfo\Translation', pointer(TransBuffer), dump);
    if dump >= 4 then
     begin
      temp:=0;
      StrLCopy(@temp, TransBuffer, 2);
      CalcLangCharSet := IntToHex(temp, 4);
      StrLCopy(@temp, TransBuffer+2, 2);
      CalcLangCharSet := CalcLangCharSet+IntToHex(temp, 4);
     end;
   VerQueryValue(buffer, pchar('StringFileInfo\' + CalcLangCharSet + '\' + VerOpt), pointer(VersionPointer), dump);
  if (dump > 1) then begin
    SetLength(Result, dump);
    StrLCopy(Pchar(Result), VersionPointer, dump);
   end else Result := '';
 finally
  StrDispose(Buffer);
 end;
end;
In einem Demo Projekt mit gleichem Code nur auf eine Datei im selben Verzeichniss angewendet klappt alles,
wenn ich nun die .exe zur kernel32.dll hinkopiere bleibt der Fehler bestehen.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat