• Исходники
  • [Delphi] Пользовательский интерфейс. Рисование и графика

Как добавить свой пункт в системное меню программы

Нижеприведенный пример демонстрирует применение API-функции AppendMenu и последующий перехват WM_SYSCOMMAND именно с этой целью.

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure WMSysCommand(var Msg: TWMSysCommand);
message WM_SYSCOMMAND;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

const
SC_MyMenuItem = WM_USER + 1;

procedure TForm1.FormCreate(Sender: TObject);
begin
AppendMenu(GetSystemMenu(Handle, FALSE), MF_SEPARATOR, 0, '');
AppendMenu(GetSystemMenu(Handle, FALSE),
MF_STRING,
SC_MyMenuItem,
'My Menu Item');
end;

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
if
Msg.CmdType = SC_MyMenuItem then
ShowMessage('Got the message') else
inherited
;
end;