Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Menüpunkte eines fremden Programms

  Alt 29. Mär 2004, 11:48
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.
Andreas
  Mit Zitat antworten Zitat