Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#13

AW: Sprach ID aus Exe auslesen

  Alt 21. Jul 2025, 18:54
Hmm..

So nochmals nach Recherche überarbeitet:

Delphi-Quellcode:
type
  TTransRec = packed record
    Lang, // language code
    CharSet: Word; // character set (code page)
  end;
  PTransRec = ^TTransRec; // pointer to TTransRec

const
  LOCALE_NAME_MAX_LENGTH = 85;

function LCIDToLocaleName(Locale: LCID; lpName: LPWSTR; cchName: Integer;
  dwFlags: DWORD): Integer; stdcall;external kernel32 name 'LCIDToLocaleName';

function LocaleIDString(aLCID : DWORD): WideString;
var
  strNameBuffer : array [0..LOCALE_NAME_MAX_LENGTH-1] of WideChar;
begin
  Result := '';
  if (LCIDToLocaleName(aLCID, strNameBuffer, LOCALE_NAME_MAX_LENGTH, 0) <> 0) then
    Result := strNameBuffer;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  InfoSize: DWORD;
  InfoData: Array of Byte;
  Translation: PTransRec;
  TranslationLen: UINT;
  RecCount: Integer; // number of translation records
  Idx : Integer;
begin
  if OpenDialog1.Execute then
  begin
    InfoSize := GetFileVersionInfoSize(PChar(OpenDialog1.FileName), InfoSize);
    if InfoSize > 0 then
    begin
      SetLength(InfoData, InfoSize);
      if GetFileVersionInfo(PChar(OpenDialog1.FileName), 0, InfoSize, @InfoData[0]) then
      begin
        if VerQueryValue(@InfoData[0], '\VarFileInfo\Translation', Pointer(Translation), TranslationLen) then
        begin
          RecCount := TranslationLen div SizeOf(TTransRec);
          Memo1.Lines.Add(IntToStr(RecCount));
          for Idx := 0 to Pred(RecCount) do
          begin
            Memo1.Lines.Add(Format('Sprach-ID: %.4x, Codepage: %.4x', [Translation.Lang, Translation.CharSet]));
            Memo1.Lines.Add(LocaleIDString(Translation.Lang));
            Inc(Translation);
          end;
        end;
      end;
    end;
  end;
end;
Mit D6 erhalte ich aber bei fast alle EXE immer nur einen Translation Eintrag!
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat