![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Блокировать сворачивание окна
antonn © (2006-03-01 09:28:00)как можно предотвратить сворачивание окна от ярлыка "Рабочий стол"? (Свернуть все окна, тип файла Windows Explorer Command, по-умолчанию находится на панели быстрого запуска)
окно без рамки(бордюра), хотя в общем то без разницы. Не сворачиваются только "on-top" окна, а мне нужно "несвернуть" обычное.
делал так (грубо, наверное, но ничего умнее не придумал...):
procedure TForm1.WndProc (var message: TMessage);
begin
case message.Msg of
WM_SHOWWINDOW: begin
case message.WParam of
0: exit;
end;
end;
end;
inherited;
end;
против Win+M помогает, а от той бадяги из первой строки - нет :(
может я не то сообщение перехватываю?
и вообще, такое чувство, что это окна не сворачиваются, а становятся visible:=false;
antonn (2006-03-06 12:02:00) [1]
> IsWindow
:)))
прошу прощения за неснятый ручник:)
begin...end (2006-03-06 09:38:00) [2]> как узнать, существует ли форма с определенным хендлом?
IsWindow
antonn (2006-03-06 09:32:00) [3]т.е. как узнать, существует ли форма с определенным хендлом?
antonn (2006-03-06 09:17:00) [4]а при падении explorer'а окна уничтожаются, или живы еще? т.е. их хендлы меняются, как до них добраться можно? утечка получается, как из можно сделать free?
GrayFace (2006-03-04 15:15:00) [5]Вот:
var w:hwnd;
w:=FindWindow('Progman','Program Manager');
if w=0 then exit;
windows.SetParent(Handle, w);
> Игорь Шевченко © (01.03.06 19:26) [11]
> Есть же операция, обратная "показать рабочий стол".
>
> Вкратце, при этой операции окно рабочего стола помещается
> поверх всех в системе, никаких сворачиваний не происходит.
Нет. На моем старом компьютере хорошо видно, что сворачивание окон происходит.
NightLord (2006-03-03 15:56:00) [6]
> [14] GrayFace © (03.03.06 10:54)
А каким образом? меня эт вопрос тоже интересует.
GrayFace (2006-03-03 10:54:00) [7]А если поместить окно на десктоп? Т.е. внутрь окна "Progam Maneger".
Игорь Шевченко (2006-03-01 19:39:00) [8]antonn © (01.03.06 19:32) [12]
А ты проконсультируйся с авторами программ, перечисленных в [10] - вдруг скажут.
antonn (2006-03-01 19:32:00) [9]Игорь Шевченко © (01.03.06 19:26) [11]
Есть же операция, обратная "показать рабочий стол".
жаль, что юзеры не все об этом знают...
> Вкратце, при этой операции окно рабочего стола
> помещается поверх всех в системе, никаких сворачиваний
> не происходит.
ну да, это я понял уже. Но перемещения то есть (доходят WM_WINDOWPOSCHANGING и WM_WINDOWPOSCHANGED), можно ли выставить окно перед окном desttop'а? по аналогии с hwndInsertAfter, только не после, а перед. Стиль "onTop" применять нельзя, отсюда и проблема.
Игорь Шевченко (2006-03-01 19:26:00) [10]Есть же операция, обратная "показать рабочий стол".
Вкратце, при этой операции окно рабочего стола помещается поверх всех в системе, никаких сворачиваний не происходит.
antonn (2006-03-01 19:20:00) [11]Crash Coredump © (01.03.06 19:11) [9]
Программа, нарушающая привычное поведение интерфейса, заслуживает только одно почетное место - в корзине.
а я еще раз спрошу - вы имеете представление о той программе, о ее интерфейсе? Уже сделана тьма тьмущая всяких часов/окон статуса/заметок и подобного софта, где окошко размером 200*50 пикселей должно постоянно находиться минимум на рабочем столе. И ничего, пользователи пользуют подобный софт, и не ворчат на "непривычное поведение интерфейса", томому как для подобного софта - несворачиваемось при "Свернуть все окна" как раз и является привычным и удобным. мне нужно такой функционал прикрутить к этой программе: http://deskclock.narod.ru/DS_main.htm(не сочтите за рекламу)
Crash Coredump (2006-03-01 19:11:00) [12]antonn © (01.03.06 18:53) [8]
Не надо желать странного, лучше заняться полезной функциональностью. Программа, нарушающая привычное поведение интерфейса, заслуживает только одно почетное место - в корзине.
antonn (2006-03-01 18:53:00) [13]Crash Coredump © (01.03.06 18:39) [7]
все с вами ясно...
Crash Coredump (2006-03-01 18:39:00) [14]antonn © (01.03.06 13:05) [2]
> я так понимаю, Вы имеете представление о той программе,
> в которой мне нужна подобная функциональность?
Даже не собираюсь иметь. Такой программе место в корзине.
antonn (2006-03-01 16:19:00) [15]мда, без примера совсем не понятно... :(
не понятно, где ее вызывать.
да и использовал так:
EndDeferWindowPos(DeferWindowPos(0,handle,
HWND_TOPMOST,0, 0, 0, 0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE));
не понять, правильно или нет...
ЗЫ пытался на application.HookMainWindow прицепиться, тоже никак...
umbra (2006-03-01 15:06:00) [16]да, как оказалось, в принципе это возможно. Посмотрите в СДК информацию о функциях
BeginDeferWindowPos, DeferWindowPos, EndDeferWindowPos
antonn (2006-03-01 14:52:00) [17]umbra © (01.03.06 13:21) [3]
konfabulator (программка, реализующая виджеты) как то может...
umbra (2006-03-01 13:21:00) [18]
> и вообще, такое чувство, что это окна не сворачиваются,
> а становятся visible:=false;
у них меняется z-ордер. Похоже, для всех окон по очереди вызывается функцияSetWindwPosи, значит, сделать ничего нельзя
antonn (2006-03-01 13:05:00) [19]Crash Coredump © (01.03.06 12:42) [1]
Зачем насиловать пользователя ?
я так понимаю, Вы имеете представление о той программе, в которой мне нужна подобная функциональность? или это "служебная фраза" во славу "правильного построения интерфейса"?
Crash Coredump (2006-03-01 12:42:00) [20]
> как можно предотвратить сворачивание окна от ярлыка "Рабочий
> стол"?
Зачем насиловать пользователя ?