Jak dodać pozycję do menu jeżeli kliknie się na ikonę aplikacji na pasku zadań

Adam Boduch

Jeżeli program jest uruchomiony i kliniesz prawym przyciskiem na na ikonę programu to rozwinie się menu ze standardowymi opcjami (Zamknij, Minimalizuj, itp.). Można dodać tam swoją pozycje - wystarczy odwołać się do WinAPI.

Umieść deklarację nowej procedury:

  private
    procedure WMNewPos(var Msg : TMsg; var Handle : Boolean);

Teraz definicja powinna wyglądać tak:

procedure TForm1.WMNewPos(var Msg: TMsg; var Handle: Boolean);
begin
  if (Msg.message = WM_SYSCOMMAND) and (Msg.wParam = 101) then
    ShowMessage('Cze!');
    Handle := True;
  end;
end;
To była obsługa naszej nowej pozycje - wyświetli się okno z informacją. Teraz wygeneruj procedurę OnCreate:

procedure TForm1.FormCreate(Sender: TObject);
begin
  AppendMenu(GetSystemMenu(Handle, FALSE), MF_STRING, 101, 'Kliknij mnie!');
  Application.OnMessage := WMNewPos;
end;
FAQ

3 komentarzy

Zamiast Application.Handle należy napisać samo Handle, jeśli tego nie uczynimy, elment zostanie dodany do menu nie formularza, tylko okna aplikacji (obiekt Application wskazuje na okno, zwane oknem aplikacji, które służy powiązaniu w całość wszystkich okien programu)

bo obie linijki po then powinny być w begin i end.

Super - pozycja jest ale dzieki tej linijce:
Application.OnMessage := WMNewPos;
aplikacja jakby nie reaguje na nic, innym slowy mowic WISI!!!