Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.009 c
4-23422
Silver_
2003-03-10 12:37
2003.05.08
Переделка одной клавиши в другую (Hook)


14-23326
Partizan
2003-04-18 13:10
2003.05.08
CGI-cценарии


14-23365
kaif
2003-04-20 16:24
2003.05.08
Delphi Update качается медленно...


1-23124
Leviathan
2003-04-26 18:43
2003.05.08
Разобрать интегер на байты


3-22949
_toltec
2003-04-20 20:09
2003.05.08
Несколько вопросов о SQL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский