Добавляем пункты в системное меню Windows
Оформил: DeeCo
Автор: MAD Rodrguez
Вы, наверное, задавались вопросом, почему системное меню постоянно одно
и тоже ? Пример показывает, как добавить туда такие пункты как "About" или
"Information", или что-нибудь ещё.
Совместимость: Delphi 3.x (или
выше)
Нам понадобится две вещи, первая это 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);
private {Private
declarations} 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.
|