Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.599 Beiträge
 
Delphi 7 Professional
 
#18

AW: Sprach ID aus Exe auslesen

  Alt 22. Jul 2025, 10:31
Diese Routine liefert mir unter Delphi 7 und Windows 11 für fast alle Exen unter c:\Windows\ die passende SprachID und die zugehörige Sprache im Klartext, dabei ist zu beachten, dass 0 eine gültige SprachID ist und für Sprachneutralität steht.
Delphi-Quellcode:
function GetExeLanguageID(const FileName: string; out LangID: Word; out Language : String) : Boolean;
var
  InfoSize, Dummy: DWORD;
  InfoData: Pointer;
  TransPtr: Pointer;
  TransLen: UINT;
  Buffer : array[0..255] of Char;
begin
  LangID := 0;
  Language := '<keine FileVersionInfo vorhanden>';
  InfoSize := GetFileVersionInfoSize(PChar(FileName), Dummy);
  Result := InfoSize <> 0;
  if not Result then Exit;

  Language := '<unbekannt>';
  GetMem(InfoData, InfoSize);
  try
    if GetFileVersionInfo(PChar(FileName), 0, InfoSize, InfoData) and
       VerQueryValue(InfoData, '\\VarFileInfo\\Translation', TransPtr, TransLen) and
       (TransLen >= 4) then
    begin
      LangID := PWord(TransPtr)^; // Language ID holen (0 für Neutral ist gültig!)
      ZeroMemory(@Buffer, SizeOf(Buffer)); // Buffer vorsichtshalber leeren
      if VerLanguageName(LangID, Buffer, Length(Buffer)) <> 0 then
        Language := StrPas(Buffer)
      else
        Language := '<unbekannt>';
      Result := True;
    end;
  finally
    FreeMem(InfoData);
  end;
end;
  Mit Zitat antworten Zitat