Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.017 c
3-38736
Zn
2004-01-21 13:16
2004.02.13
Как отключить все активные DataSet?


1-38889
d_oleg
2004-02-04 10:05
2004.02.13
ACDSee форматы граф. файлов


1-38935
olookin
2004-02-04 10:37
2004.02.13
Вставка русскоязычного текста из буфера


3-38679
Suharew
2004-01-23 16:56
2004.02.13
Это что за файлы _QSQ10.DB,_QSQ11.DB


14-39026
Alexander666
2004-01-26 11:06
2004.02.13
Delphi 7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский