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;
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!!!