Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

программирование [D7, WinXP]


Страницы:   1 2 3

МишаК ©   (2006-07-02 20:13:00) 

можно сделать так что бы прогр-ма всегда была активизированна
даже если параллельно ей работает другая например MS Word


Alx_   (2006-07-16 02:02:00) [1]

Удалено модератором


unknown   (2006-07-16 01:21:00) [2]

Удалено модератором


Пусик   (2006-07-15 20:59:00) [3]


Mr.Floppy   (2006-07-03 16:12:00) [4]

А еще можно сделать скриншот, распечатать и прикрепить к монитору. Тогда точно будет поверх всех окон %)


Игорь Шевченко   (2006-07-03 16:09:00) [5]

Ketmar ©   (03.07.06 10:46) [42]


> вот мои часики, например, всё равно имеют таймер. ну и всплывают,
>  натурально, раз в несколько секунд. чтобы вражеские программы,
>  которые тоже любят "он топ", не закрывали мне показания
> точного времени


Если твои часики не имеют отключения этого поведения, то в корзину.


Eraser   (2006-07-03 15:40:00) [6]

> [44] Ketmar ©   (03.07.06 15:37)

ну ещё и через DirectX можно...

а Shell Hook - те же яйца с прыганием, только в профиль, хотя по-лучше, чем просто по таймеру.


Ketmar   (2006-07-03 15:37:00) [7]

>Eraser ©   (03.07.06 15:21) [43]
кое-какое -- имеет. Shell Hook. %-)


Eraser   (2006-07-03 15:21:00) [8]

> [31] Игорь Шевченко ©   (03.07.06 00:00)


> За прыгание по таймеру программу в корзину, программисту
> - пожизненный эцих с гвоздями.

ну а без таймера задача не имеет даже половинчатого решения :)


Ketmar   (2006-07-03 10:46:00) [9]

>Игорь Шевченко ©   (03.07.06 00:00) [31]
почему же сразу эцих? вот мои часики, например, всё равно имеют таймер. ну и всплывают, натурально, раз в несколько секунд. чтобы вражеские программы, которые тоже любят "он топ", не закрывали мне показания точного времени. удобно и безопасно. а главное -- ну ни разу не напрягало.


flaxe   (2006-07-03 08:30:00) [10]

Удалено модератором


Юрий Зотов   (2006-07-03 01:57:00) [11]

> Пусик ©   (03.07.06 01:45) [39]

Тогда и я добавлю: чтобы top-форма не отображалась в панели задач, ей, естественно, нужно влепить еще и WS_EX_TOOLWINDOW.

Но все равно - те же 2 строчки.
:о)


Пусик   (2006-07-03 01:45:00) [12]

Ну и последнее замечание.

В решении с Application.OnIdle форма останется поверх даже менеджера задач. К сожалению.


Пусик   (2006-07-03 01:23:00) [13]


> Юрий Зотов ©   (03.07.06 01:01) [34]


Спасибо за красивое решение.


Пусик   (2006-07-03 01:21:00) [14]


> Юрий Зотов ©   (03.07.06 01:01) [34]


Маэстро, Вы бесподобны ;)


Юрий Зотов   (2006-07-03 01:16:00) [15]

> Плохиш ©   (03.07.06 01:11) [35]

Уже спрашивал, в [3]. Автор молчит, как партизанка на допросе.

Поэтому как отвечать на его вопрос - пока неясно. Ну мы тем временем и решили поразвлечься немного.
:o)


Плохиш   (2006-07-03 01:11:00) [16]

ToAll
Читал вас долго и унимательно, но так и не понял, при чём здесь окна поверх всех, если автор спросил:

> можно сделать так что бы прогр-ма всегда была активизированна
> даже если параллельно ей работает другая например MS Word

Хотел бы спросить у автора, что он понимает под словом "активизированна"?


Юрий Зотов   (2006-07-03 01:01:00) [17]

> Пусик ©   (02.07.06 23:18) [23]

> сказанное выше оппонентами верно только для главной формы
> приложения. И неверно для остальных.

Естественно. Впрочем, Игорь уже уточнил - с родителем HWND_DESKTOP.

> Не всегда целесообразно такой стиль использовать для главной формы,

Угу, снова согласен.

> Но, решение существует.

Дык... а кто сомневался?

> Вот только хочу дождаться реализации без "прыжков" для любой формы
> приложения.

Хотя оно элементарно и очевидно, но все для Вас, милейший Пусик:

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
 inherited;
 Params.WndParent := 0;
 Params.ExStyle := Params.ExStyle or WS_EX_TOPMOST
end;

Ровно 2 элементарных строчечки, как видите. И никаких прыжков. И для любой формы.
:о)

> Дело в том, что если некоторый высокоприоритетный поток начнет свою
> деятельность после того, как целевое окно уже будет поверх остальных,
> то никаких прыжков уже не понадобится.

Дело в том, милейший Пусик, что абсолютно ничто не мешает потоку по ходу пьесы менять свой приоритет, как ему вздумается. И, чтобы не слишком мешать системе, обычно фоновые потоки, выполняющие критические операции именно так и делаются - ставят себе высокий приоритет только на время выполнения этой самой операции, а потом снова ставят обычный, или даже Idle.

Так что, картина получается такая: поток дремал-дремал, а потом вдруг ка-ак проснулся, да ка-ак начал безобразничать! И какое из "прыгающих" окон в этот момент оказалось верхним - такое верхним и останется, до тех пор пока поток снова не задремлет, и ни таймер, ни Ваш OnIdle не помогут. А в дальнейшем эта бурная деятельность потока запросто может повторяться, с произвольной периодичностью. И получится, что во время этой самой бурной активности сверху будет то одно окно, то другое, то пятое, то десятое. А бедняга юзер, ничего ни о каких потоках не подозревающий, будет удивленно смотреть, как у него окна на экране самопроизвольно дергаются на передний план и обратно. Картина Репина!

Вот такие вот прыжки, милейший Пусик. А ведь можно и без них. Всего 2 строчки.
:о)


Пусик   (2006-07-03 00:10:00) [18]

Вообще, в постинге [16] задача была конкретизирована.
Думаю, что автор вопроса не будет за это в обиде, тем более, что в топике он этого не сделал.


Пусик   (2006-07-03 00:08:00) [19]


> Игорь Шевченко ©   (02.07.06 23:56) [30]
> Пусик ©   (02.07.06 23:18) [23] > Вот только хочу дождаться
> реализации без "прыжков" для любой > формы приложения. А
> что, был вопрос про "любую форму" ? Я что-то пропустил при
> чтении или это уже ваша вольная интерпретация ?


А что, вопрос был про конкретную форму?


Игорь Шевченко   (2006-07-03 00:00:00) [20]

Eraser ©   (02.07.06 23:18) [24]


> Дык способ, который предложил ИШ не исключает этого самого
> прыгания... т.к. если какое-то другое приложение тоже выполнит
> код [15], то предыдущее приложение уже будет далеко не "поверх
> всех окон", придется прыгать по таймеру.


За прыгание по таймеру программу в корзину, программисту - пожизненный эцих с гвоздями.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо