Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
1-50737
Шурик Ш
2002-09-05 18:46
2002.09.16
Главное окно - окна потомки


6-50908
eastwood
2002-07-10 06:26
2002.09.16
X.25


1-50698
Micah'GF
2002-09-04 21:06
2002.09.16
Нужно держать 2 копии программы.


1-50740
Borys
2002-09-02 19:07
2002.09.16
Видимость переменных


3-50632
ShuraGrp
2002-08-22 17:33
2002.09.16
DBRestore ??




   Наверх