Добавляем пункты в системное меню Windows

Материал из DRKB

Добавляем пункты в системное меню Windows[править | править код]

Вы, наверное, задавались вопросом, почему системное меню постоянно одно и тоже ? Пример показывает, как добавить туда такие пункты как "About" или "Information", или что-нибудь ещё.

Нам понадобится две вещи, первая это Item ID, который может быть любым целым числом. Второе это Описание(Caption) для нашего пункта меню. Нам понадобится также процедура, которая будет принимать сообщения Window для определения нажатия на наш пункт меню.


unit OhYeah; 

interface 

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, Menus; 

type 
  TForm1 = class(TForm) 
    procedure FormCreate (Sender: TObject); 
  public  { Public declarations } 
    procedure WinMsg(var Msg: TMsg; var Handled: Boolean); 
    procedure DoWhatEever; 
  end; 

var
  Form1: TForm1; 

implementation 
{$R *.DFM} 

const
  ItemID = 99; // ID номер для пункта меню. Может быть любым 

procedure TForm1.WinMsg(var Msg: TMsg; var Handled: Boolean); 
begin 
  if Msg.Message = WM_SYSCOMMAND then 
    if Msg.WParam = ItemID then
      DoWhatEver; 
end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
  Application.OnMessage := WinMsg; 
  AppendMenu(GetSystemMenu(Form1.Handle, False), MF_SEPARATOR, 0, ''); 
  AppendMenu(GetSystemMenu(Form1.Handle, False), MF_BYPOSITION, ItemID, '&My menu'); 
  AppendMenu(GetSystemMenu(Application.Handle, False), MF_SEPARATOR, 0, ''); 
  AppendMenu(GetSystemMenu(Application.Handle, False), MF_BYPOSITION, ItemID, '&My menu minimized'); 
end; 

procedure TForm1.DoWhatEver; 
begin 
  Exit;    // Вы можете добавить здесь всё, что угодно 
end; 

end.


Source: Взято из http://forum.sources.ru
ID: 01296