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

Вниз

Поверх всех окон.   Найти похожие ветки 

 
R   (2003-04-23 10:02) [0]

Вопрос стар как мир однако сколько пробовал все примеры какие то карявые. Вопрос:
как сделать чтобы созданное динамически модальное окно выводилось всегда поверх всех окон даже игрушек.


 
Anatoly Podgoretsky ©   (2003-04-23 10:34) [1]

Запусти две такие программы и убедишься, что нельзя, они просто передуерутся и одна проиграет, так что забудь слово всегда.


 
Игорь Шевченко ©   (2003-04-23 10:47) [2]

MessageBox


 
evvcom ©   (2003-04-23 11:04) [3]

> Anatoly Podgoretsky
Да не передерутся, просто кто последний - тот и папа.


 
Palladin ©   (2003-04-23 11:15) [4]


> evvcom © (23.04.03 11:04)

вывод: не допускать запуск второго экземпляра


 
evvcom ©   (2003-04-23 11:43) [5]

> Palladin
А такие приложения - совсем необязательно два экземпляра одного exe.


 
Anatoly Podgoretsky ©   (2003-04-23 11:52) [6]

evvcom © (23.04.03 11:04)
Я бы согласился с такой постановкой, если бы в вопросе не было указано всегда

Palladin © (23.04.03 11:15)
Что бы не говорить о двух экземляраях, скажем два разных приложения с таким абсурным требованием.


 
Palladin ©   (2003-04-23 11:56) [7]

:)
хорошо сказано "абсурдным требованием"
ессно согласен...


 
Opera ©   (2003-04-23 12:58) [8]

SwitchToThisWindow(1,True)

или

SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width, Height, SWP_NOREDRAW);


 
DVM ©   (2003-04-23 13:02) [9]


> SwitchToThisWindow(1,True)

во-первых, это не для всех, а только для топ-левел окон
во-вторых, только на время

> SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width, Height,
> SWP_NOREDRAW);

до появления первого такого же окна.


 
KSergey ©   (2003-04-23 13:47) [10]


> > SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width, Height,
>
> > SWP_NOREDRAW);
>
> до появления первого такого же окна.

Да. но если нужно хоть какое-то решение, но дубовое и грубое (если это допустимо!) - просто выполнять сию консрукцию, скажем, раз в сек.


 
Palladin ©   (2003-04-23 13:53) [11]

вот вот :)
именно консрукцию


 
sniknik ©   (2003-04-23 14:21) [12]

KSergey © (23.04.03 13:47)
а если то же самое будет делать окно конкурент?
(раз в полсекунды :о))


 
DVM ©   (2003-04-23 14:48) [13]

Вобщем забудьте о этой затее. Можно только ниже всех, выше - нельзя!


 
Anatoly Podgoretsky ©   (2003-04-23 20:07) [14]

KSergey © (23.04.03 13:47)
Если мы выполним это требование для первого окна, значим мы не удовлетвом это требование для второго окна, которое так же имеет наполеоновские плаыны всегда, капец какой то аднака.


 
R   (2003-04-24 01:46) [15]

Подвожу итог для того чтобы окно было всегда поверх других
надо сделать так или есть еще мнения?

procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width, Height, SWP_NOREDRAW);
end;



 
Odin ©   (2003-04-24 01:59) [16]

К слову о консрукции.
еслу человеку очень хочется вывестись поверх можно:
1: при помощи стандартного скрипта Windows свернуть все окна
"C:\WINDOWS\Application Data\Microsoft\Internet Explorer\Quick Launch\Свернуть все окна.scf",
а потом запустить через каждую миллисекунду, и окно навсегда останется на экране :)

2: По сложнее - пролезть в систему (ну тира Process32First и т.д.) и во всех окнах снять флаг HWND_TOPMOST (а лучше вообще закрыть, чтобы там всякие не брыкались, вроде 0.00001 секунды и т.д.), а у себя поставить HWND_TOPMOST.


 
Snap ©   (2003-04-24 02:01) [17]

Можно найти все окна у которых стоит Он топ и позакрывать их :)))))
И при этом если окно своей проги закрылось, открывать его вновь, смотреть какой процесс посмел так гружбо поступить с нашими и делать ему terminate :)))


 
Snap ©   (2003-04-24 02:05) [18]


> Odin © (24.04.03 01:59)

:)))


 
R   (2003-04-24 02:21) [19]

>Odin © ,Snap © все это как то сложновато на мой взгляд.
Я тут протестировал
procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width, Height, SWP_NOREDRAW);
end;

не подходит дело в том что
1.Даже установив интервал 1мс его(окно) перекрыло
первое же запущенное мною окно- Сократа(переводчик)
2.Работает не корректно так как перерисовываясь оставляет
на своей "поверхности" элементы других окон например меню Win
кнопки пуск.

Вывод и эта ветка с корявыми примерами.

>Игорь Шевченко © MessageBox не подходит надо именно чтобы созданное мною окно в котором есть определенные элементы.


 
Palladin ©   (2003-04-24 07:54) [20]


> R (24.04.03 02:21)

парень, заметь, ведь и ты не идеален...


 
Palladin ©   (2003-04-24 07:56) [21]

могу дать один совет: поковыряй taskmgr.exe, еще ни одно окно его не перекрыло (кроме dx,gl приложений, их ты точно не перекроешь)


 
DVM ©   (2003-04-24 09:21) [22]


> могу дать один совет: поковыряй taskmgr.exe, еще ни одно
> окно его не перекрыло

c таймером запросто!


 
R   (2003-04-24 10:02) [23]

> Palladin ©
> парень, заметь, ведь и ты не идеален...
Совсем не идеал!

> c таймером запросто!
Как?


 
Palladin ©   (2003-04-24 10:18) [24]


> DVM © (24.04.03 09:21)

ну я не имел ввиду консрукции :)



Страницы: 1 вся ветка

Текущий архив: 2003.05.08;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.016 c
14-23285
Дмитрий К.К.
2003-04-22 05:59
2003.05.08
Именинники 22 апреля


1-23166
alt7
2003-04-23 17:27
2003.05.08
Булевы глюки


4-23425
ers
2003-03-10 14:35
2003.05.08
Как узнать состояние окна?


3-22951
pok
2003-04-21 14:07
2003.05.08
Запрос по результатам запроса?


3-22938
Sergant
2003-04-21 08:14
2003.05.08
Упаковка БД Interbase