Форум: "Потрепаться";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
ВнизПерехват сообщения Windows Найти похожие ветки
← →
Ig (2004-01-26 00:03) [0]Какое сообщение надо обработать, что-бы при нажатии "Свернуть Все Окна",
Мое окно не сворачивалось.
Пробовал так :
...
protected
Procedure WMGetMessage(Var Msg:TMessage); message WM_SYSCOMMAND;
...
Procedure TForm1.WMGetMessage(Var Msg:TMessage);
Begin
IF Msg.WParam=SC_MINIMIZE then exit
else inherited;
end;
При нажатии на кнопку минимизации в окне работает, а при нажатии "СВО" не работает :(
← →
DVM (2004-01-26 00:18) [1]А с чего Вы взяли, что окну при нажатии этой кнопки приходит SC_MINIMIZE? В Microsoft не дураки - они специально так сделали, чтобы можно было свернуть ВСЕ ОКНА, включая даже окна подвисших приложений. На самом деле ничего не сворачивается (на таскбар не смотрите - она тоже врет в данном случае). Просто десктоп (точнее одно из окон, накрывающий десктоп - Progman, скорее всего) двигается наверх, накрывая собой все другие окна.
← →
Ig (2004-01-26 00:26) [2]И что можно сделать?
Как узнать, что была нажата клавиша сворачивания всех окон?
← →
Rouse_ (2004-01-26 00:31) [3]> [1] DVM © (26.01.04 00:18)
Про рабочий стол - полная чушь...
← →
DVM (2004-01-26 00:38) [4]
> Rouse_ © (26.01.04 00:31) [3]
> > [1] DVM © (26.01.04 00:18)
> Про рабочий стол - полная чушь...
Да ну..? Ну ка изложите собственную версию. Прежде чем утверждать надо указать доказательства утверждений. У меня они есть.
← →
Ig (2004-01-26 00:39) [5]>Rouse_ © (26.01.04 00:31) [3]
А, что не чушь?
← →
DVM (2004-01-26 01:02) [6]Вобщем, окну "сворачиваемому" таким образом WM_SYSCOMMAND действительно не приходит (по данным SPY++). Приходит лишь WM_WINDOWPOSCHANGING/WM_WINDOWPOSCHANGED, а затем извешщение WM_SIZE с флагом SIZE_MINIMIZED. Вот их и надо отслеживать.
← →
Rouse_ (2004-01-26 08:51) [7]> [6] DVM © (26.01.04 01:02)
Ну ты же сам привел доказательства...
А чушь то что происходит покрытие всех окон Progman-ом (попробуй The Bat так свернуть)
← →
Anatoly Podgoretsky (2004-01-26 09:16) [8]Ig © (26.01.04 00:03)
Чем твое окно так примечательно, по отношению к другим окнам Виндоус, что ты даже замахнулся на святое, на пользователся и Билл Гейтса. Явно место такой программе в одном известном месте.
← →
Nikky (2004-01-26 09:18) [9]Если я увижу, что какая-то прога не сворачивается при нажатии клавишы, я лично снесу ее сразу :)
← →
Ig (2004-01-26 11:42) [10]>Anatoly Podgoretsky © (26.01.04 09:16) [8]
>ты даже замахнулся на святое, на пользователя
Простите, а в чем заключается этот замах, поясните, Я думаю Мне никак не помешает маленькое окошко, размером 50x25 , в правом нижнем углу, делаю то, только для Себя родного и если, Я Себя этим как-то ущемляю, то Я это переживу :)
← →
DVM (2004-01-26 12:44) [11]
> Rouse_ © (26.01.04 08:51) [7]
> > [6] DVM © (26.01.04 01:02)
> Ну ты же сам привел доказательства...
> А чушь то что происходит покрытие всех окон Progman-ом (попробуй
> The Bat так свернуть)
Во-первых. Bat у меня сворачивается как и все. И по Win+M и по Win+D.
Во вторых. Я не утверждал, что это точно окно Progmana на 100%. Я предположил. Потом посмотрел SPY++. WM_WINDOWPOSCHANGING Progman-у тоже не приходит, значит он не двигается. Но зато приходят многочисленные сообщения рисования, что навело на мысль: какое-то из окон (Desktop, Progman ...) просто отрисовывает себя поверх всего. Как, я не знаю.
← →
Polevi (2004-01-26 12:58) [12]uses ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
z:OleVariant;
begin
z:=CreateOleObject("Shell.Application");
z.MinimizeAll;
end;
реализовано это добро в shell32.dll, там кстати есть много интересного
можно попробовать подменять таблицу адресов IShellDispatch, заменяя MinimizeAll своей ф-ией, которая после выполнения исходного кода будет восстанавливать твою "прогу"
http://www.gotdotnet.ru/Forums/CommonForum/3200.aspx#3200
удачи
← →
Ig (2004-01-26 12:58) [13]to DVM ©
А где можно найти этот SPY++.
← →
Игорь Шевченко (2004-01-26 13:01) [14]Rouse_ © (26.01.04 00:31) [3]
> > [1] DVM © (26.01.04 00:18)
> Про рабочий стол - полная чушь...
Ой. Ты хорошо подумал ?
← →
Polevi (2004-01-26 13:06) [15]хм, хотя эффект не совсем совпадает
← →
Ig (2004-01-26 13:26) [16]Ну а все-таки, Мне надо искать нужное сообщение или, что-то другое?
Пробовал так :
...
procedure TForm1.FormShow(Sender: TObject);
begin
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
ShowWindow(Application.Handle,SW_HIDE);
End;
Не минимизируется, но окно находится поверх всех, Мне так не хотелось делать, но наверное прийдется :(
← →
Ig (2004-01-26 19:42) [17]Ну так где можно найти этот SPY++ :)
← →
Polevi (2004-01-26 20:12) [18]Microsoft Visual Studio
← →
Ig (2004-01-26 20:18) [19]Блин, только вчера удалил! Может где-то еще?
← →
Юрий Зотов (2004-01-26 20:25) [20]> Ig © (26.01.04 20:18) [19]
MS Windows Platform SDK
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c