Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.16;
Скачать: CL | DM;

Вниз

Как перехватить нажатие кнопки Windows и M   Найти похожие ветки 

 
Евгений Дем.   (2002-08-31 11:33) [0]

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


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

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


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

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


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

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


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

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


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

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;



Страницы: 1 вся ветка

Текущий архив: 2002.09.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
8-50876
PEC
2002-05-15 10:55
2002.09.16
Помогите !!!


1-50847
FireStream
2002-09-04 15:10
2002.09.16
Странные глюки с размерами


1-50736
Strumpf
2002-09-05 16:48
2002.09.16
Как перевести оператор in из Delphi в С++?


3-50633
Друмлин
2002-08-26 22:27
2002.09.16
большие траблы!! :((


1-50704
Kent
2002-09-04 16:33
2002.09.16
У меня возникает ошибка при вызове процедуры из DLL внутри потока