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

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

Окно приложения по верх всех окон системы


Страницы:   1 2

lightix ©   (2004-10-07 10:32:00) 

Имеется некое приложение, в нем несколько форм .
Нужно чтобы одна из форм была всегда видна поверх всех окон , причем поверх всех приложений запущеных в системе.
Идея такая  - показывать пользователю на отдельной плавающей панельке часы и индикатор языка, какие бы приложения он ни запускал.


DVM   (2004-10-07 11:25:00) [1]


> Дело в том что приложения запускаются не на компьютере юзера
> а на сервере терминалов, и приложение не имеет доступа к
> системе и тем более таскбару компьютера пользователя. во
> как загнул :)

для программ нет почти никакой разницы локально или через терминал их запускают. Все(почти), что работало локально, заработает и в терминале. Если это терминал Windows.

> "Как сделать приложение подобное панели MS Office" :)

ShAppBarMessage()


lightix   (2004-10-07 11:21:00) [2]

Давайте лучше я заведу новую ветку и назову ее "Как сделать приложение подобное панели MS Office" :)


lightix   (2004-10-07 11:20:00) [3]


> Жбан   (07.10.04 11:17) [22]
> Можешь попробовать в событии OnDeactivate своей формы заставлять
> быть форму активной - тогда она всегда будет на верху по
> отношению к другим формам StayOnTop, даже если те будут
> пытаться получить фокус.

Скорее на OnDeativate приложения (меню) а не формы, ибо меню вызывает через WinExec другие приложения, и Deactivate формы не происходит


lightix   (2004-10-07 11:18:00) [4]

Дело в том что приложения запускаются не на компьютере юзера а на сервере терминалов, и приложение не имеет доступа к системе и тем более таскбару компьютера пользователя. во как загнул :)


Жбан   (2004-10-07 11:17:00) [5]

Можешь попробовать в событии OnDeactivate своей формы заставлять быть форму активной - тогда она всегда будет на верху по отношению к другим формам StayOnTop, даже если те будут пытаться получить фокус.


DVM   (2004-10-07 11:10:00) [6]


> При всем этом юзера не видят ни свой таскбар

А куда панель задач то девается?

Вообще-то панель задач делает так: когда активируется топ-левел окна, окно панели задач двигается наверх. Делается хуком WH_SHELL.


КаПиБаРа   (2004-10-07 11:09:00) [7]

lightix   (07.10.04 11:03) [16]
аю

У главной формы
FormStyle := fsStayOnTop


lightix   (2004-10-07 11:09:00) [8]


> Jay   (07.10.04 11:08) [18]
> Сделай Align у главной формы alClient и не разворачивай
> её на весь экран

И что толку? Окно клиента терминалов закроет таскбар юзера, а на сервере терминалов таскбар вообще не показывается (ну нельзя в принципе им показать его)


Jay   (2004-10-07 11:08:00) [9]

Сделай Align у главной формы alClient и не разворачивай её на весь экран


DVM   (2004-10-07 11:04:00) [10]


> А драйвер видеокарты?

Драйвера не все умеют. И это уже совсем др. песня. На 3 порядка сложнее будет.
А менюшка монитора все равно выше.
А еще выше липкая бумажка, наклеенная на монитор. :)


lightix   (2004-10-07 11:03:00) [11]

Тогда может подскажете как решить такую проблему:
Пользователи логинятся на сервер терминалов вин2к, автоматически запускается программа "Меню", которая в зависимости от пользователя динамически строит для него менюшку, из которой запускаются приложения.
При всем этом юзера не видят ни свой таскбар, ни таскбар сервера.
А им необходимо (аж вопят) видеть часы и текущий выбранный язык.
Идея была такая - сделать плавающую панельку, на которой бы телепались эти часы и индикатор раскладки клавиатуры.
Ну и другой вариант - делать в каждой проге такую панельку :(

Кстати насчет невозможности такого - у PROMTa же есть такая панелька! или возьмите к примеру плавающую панель MS Office.


КаПиБаРа   (2004-10-07 11:00:00) [12]

DVM ©   (07.10.04 10:55) [12]
Невозможно в принципе.


А драйвер видеокарты?


Johnmen   (2004-10-07 10:56:00) [13]

>lightix
>мне нужно чтобы ПОВЕРХ ВСЕХ ПРИЛОЖЕНИЙ была!

А как ты себе представляешь, если др.приложение тоже захочет ?


lightix   (2004-10-07 10:56:00) [14]

да что ж такое :(
у меня BCB 5.0


DVM   (2004-10-07 10:55:00) [15]


> Нужно чтобы одна из форм была всегда видна поверх всех окон
> , причем поверх всех приложений запущеных в системе.

Невозможно в принципе. Доказательство простое: что будет, если запустить две таких программы? Обе будут поверх друг друга?

Частично это можно решить с пом SetWindowPos() и обработкой WM_WINDOWPOSCHANGING.

Поверх всего только менюшка монитора с настройками изображения.:)


Жбан   (2004-10-07 10:54:00) [16]

Я вот щас попробовал повторить твой пример - у меня IE не перекрывает мою форму...


lightix   (2004-10-07 10:51:00) [17]

Странно. Сделал новое приложение из 2-х форм - одна Normal другая StayOnTop - не перекрываются.
А вот переключился на IE чтобы написать это письмо - IE ее перекрыл. А мне нужно чтобы ПОВЕРХ ВСЕХ ПРИЛОЖЕНИЙ была!


lightix   (2004-10-07 10:48:00) [18]

нету у меня никакого другого StayOnTop
Одно. И перекрывается


Жбан   (2004-10-07 10:46:00) [19]

Может у тебя уже есть окно fsStayOnTop. И если оно активное, то будет перекрывать твое окно


lightix   (2004-10-07 10:46:00) [20]

4 окна, из них одно StayOnTop - перекрывают даже они, не говоря уже об окнах других приложений


Страницы:   1 2

Наверх

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