Главная страница
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.021 c
1-38884
MadGhost
2004-02-04 18:34
2004.02.13
как продолжить поиск в тексте функцией AnsiPos


1-38782
turonix
2004-02-03 14:22
2004.02.13
Корректное отображение окон при смене разрешения


8-38977
Gabriel
2003-10-12 22:51
2004.02.13
avi - dll


1-38930
Pahan_
2004-02-02 22:31
2004.02.13
Как преобразовать строку в Unicode, а так же из Unicode?


1-38767
V-A-V
2004-02-05 09:07
2004.02.13
Дата и время создания и модификации файла