Versuch mal (ungetestet):
Delphi-Quellcode:
procedure TFrmMenues.FormCreate(Sender: TObject);
var hBiss: HWND;
hMenue: HMENU;
IntZaehler, len: Integer;
StrText: String;
begin
hBiss := FindWindow(nil, 'Biss+');
hMenue := GetMenu(hBiss);
for IntZaehler := 0 to GetMenuItemCount(hMenue) - 1 do
begin
// benötigte Länge abfragen
len := GetMenuString(hMenue, IntZaehler, nil, 0, MF_BYPOSITION);
// Speicher bereitstellen
SetLength(StrText, len+1); // +1 für terminating null character
if GetMenuString(hMenue, IntZaehler, pchar(StrText), len+1, MF_BYPOSITION) <> 0 then
ListBoxHaupt.Items.Add(Copy(StrText,1, len))
else
ListBoxHaupt.Items.Add(Format('GetMenuString(,%d,,) failed', [IntZaehler])
end;
end;
Ausserdem würde ich daraus eine Procedure machen:
procedure FillTStringsFromMenuHandle(hMenue: HMENU; list:TStrings);
und in irgeneine
Unit mit weiteren Hilfsfunktionen packen.