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

Вниз

Перехват сообщения 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.031 c
4-39126
Kair
2003-12-12 07:56
2004.02.13
Курсор мышки


1-38812
MegaProf
2004-02-02 13:04
2004.02.13
Графика


1-38799
Qwer
2004-02-03 12:48
2004.02.13
ApplicationEvents не перехватывает Exception в DLL


1-38947
shutov
2004-02-03 21:01
2004.02.13
MD5 в Delphi


3-38730
Serge12345
2004-01-20 23:36
2004.02.13
ADO+Paradox почему Could not convert varian of type(Null) into Ty