| 
| 
 | Вопрос # 779/ вопрос открыт / | 
 |  Как сделать так, чтобы в моей программе на панели задач при нажатии правой кнопки мыши на кнопку с моей программой НЕ выводилось стандартное "Свернуть", "Закрыть",..., а чтобы выводилось только например, "О программе" и при нажатии этого меню совершалось действие? 
|  |   Вопрос задал: Кирилл Х Ю (статус: Посетитель)Вопрос отправлен: 23 июля 2007, 14:57
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Кирилл Х Ю!Для этого нужно две вещи - первое  - узнать хендл меню. Потом используя апи функции можно манипулировать им.
 узнать хендл - это просто GetSystemMenu (Application.Handle, False).
 Но надо знать, что кнопка на панели задач может соответсвовать как Application (Невидимое окно), так и главной форме.
 
 Добавить пункт AppendMenu (хендл, MF_SEPARATOR, 0, \'\');
 удалить DeleteMenu (хендл,номер в списке,MF_BYPOSITION)
 в приложении смотрите наброски кода
 Приложение:Переключить в обычный режим Unit OMenu;  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}    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  End;  End.
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 23 июля 2007, 15:31
 Оценка за ответ: 5
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |