Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как перехватить нажатие кнопки Windows и M [D6, WinME, Win2k]


Евгений Дем. ©   (2002-08-31 11:33:00) 

Такакя проблема: Делаю программу которая минимизируеться в трею - соответственно обработал сообщения WM_SysCommand в самой форме и в Application (что бы минимизировалось при выборе пункта минимизировать в панели задачь) - но как вы наверное знаете при нажатии кнопки со значком Windows и клавиши с аниглийской M происходит минимизация всех окон (не модальных) но однако ни приложение Application ни форма не получают сообщение WM_SysCommand с параметром Sc_Minimize И соответственно приложение минимизируется в панель задачь а ни в трею.
Так вот кто знает как это победить прошу ответить и пошлите пожалуйста ваше предложение мне на E-mail demonoff@cmail.info.kuzbass.net так как в интернет хожу не часто (за неимением доступа) а почту читаю
P.S. - Такую же недоработку встречал во многих программах - например в The Bat !


Ученик   (2002-09-05 11:17:00) [1]

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.HookMainWindow(DoMessage)
end;

function TForm1.DoMessage(var Message : TMessage) : Boolean;
begin
Result := False;
if (Message.Msg = WM_SIZE) then begin
case Message.WParam of
SIZE_MINIMIZED : ShowWindow(Application.Handle, SW_HIDE);
SIZE_RESTORED : ShowWindow(Application.Handle, SW_SHOW);
end
end
end;


Ученик   (2002-09-05 10:45:00) [2]

Посылается WM_ShowWindow с SW_PARENTCLOSING, но обработка ShowWindow(Application.Handle, SW_HIDE) почему-то кнопку на TaskBar не скрывает


msts   (2002-09-05 10:35:00) [3]

Я бы сказал что вообще не посылаются сообщения окнам...
за исключением только listview показывающему рабочий стол с иконками - что то вроде "bring to front" путем вызова SetWindowPos(тряляля, ???_TOP) (забыл константы)


Юрий Зотов   (2002-09-05 09:57:00) [4]

Есть предположение, что Win+M на самом деле не минимизирует, а просто прячет все окна (то есть, идет совсем другое сообщение). Проверить легко - запустить WinSight и посмотреть, какое сообщение реально приходит. Его и ловить.


Евгений Дем   (2002-09-05 09:36:00) [5]

Ну может кто нибуть ответит


Наверх

Титульная страница Поиск, карта сайта Написать письмо