Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2009, 17:44   #1
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
По умолчанию Как сделать так, чтобы форма была поверх всех окон?

Здравствуйте! У меня такой вопрос:
Как сделать так, чтобы форма была поверх всех окон в прямом смысле слова?
Перерыл кучу подобных тем- решения своей задаче не нашёл.

Нужно чтобы форма была всегда поверх простых окон, поверх окон у которых Form1.FormStyle := fsStayOnTop
и поверх всех игр которые будут запущены(вроде Battlefield2), и при этом была в неактивном состоянии.

Т.е. чтобы её никакое приложение не могло перекрыть.
Jupiter вне форума Ответить с цитированием
Старый 26.07.2009, 17:45   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Код:
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE);
End;
Всегда рад помочь!

Последний раз редактировалось Terran; 26.07.2009 в 17:55.
Terran вне форума Ответить с цитированием
Старый 26.07.2009, 17:54   #3
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Можете попробовать данный вариант, в таймере пишите вот это:
Код:
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 26.07.2009, 18:15   #4
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
По умолчанию

Код:
Procedure TForm1.Timer1Timer(Sender: TObject);
Begin
SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE Or SWP_NOMOVE Or SWP_NOSIZE);
End;
Этот код действительно держит форму поверх простых окон и поверх окон с
FormStyle := fsStayOnTop.
Полноэкранные игры полностью перекрывают поверхность формы.

а как сделать чтобы её и полноэкранные игры не смогли перекрыть?
Jupiter вне форума Ответить с цитированием
Старый 27.07.2009, 11:25   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а как сделать чтобы её и полноэкранные игры не смогли перекрыть?
Например в таймер этот код пихни...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2009, 21:03   #6
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Например в таймер этот код пихни...
Тоже не помогает, даже через 1ms. Но если щёлкнуть мышью, в месте, где предположительно находится форма, то она активизируется, и игра сворачивается, т.е. форма вроде- бы и поверх игры,(раз мышь её активизирует во время игры), но визуально её не видно.

Как сделать её видимой?
Уже четвёртый день ищу ответ, это вообще возможно?
Jupiter вне форума Ответить с цитированием
Старый 28.07.2009, 21:05   #7
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Цитата:
Тоже не помогает, даже через 1ms. Но если щёлкнуть мышью, в месте, где предположительно находится форма, то она активизируется, и игра сворачивается, т.е. форма вроде- бы и поверх игры,(раз мышь её активизирует во время игры), но визуально её не видно.

Как сделать её видимой?
Уже четвёртый день ищу ответ, это вообще возможно?
Мне кажется, что некоторые игры обрабатывают появление новых окон, и сворачиваются или блокируют или еще что...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 28.07.2009, 22:01   #8
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Цитата:
т.е. форма вроде- бы и поверх игры,(раз мышь её активизирует во время игры), но визуально её не видно.
ИМХО, игра работает напрямую с видеокартой, просто налаживая свое изображение поверх остальных.
// Ну и выразился)))))
Levsha100 вне форума Ответить с цитированием
Старый 31.07.2009, 06:52   #9
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

Тоже этаже проблема хочу форму поверх игры
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 31.07.2009, 17:42   #10
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Нормальные 3D-игры делают при помощи DirectX... Их не перекроешь...
Но если нужно не просто "поверх всех окон", а "форма поверх какой-то игры", то можно попробовать рисовать своё окно вручную в DirectX-окне игры...

Сам не пробовал, да и Знаний мне не хватит, но есть же программы которые так умеют - значить такое возможно... =)
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что нужно сделать, чтобы форма была поверх панели задач? Andr Общие вопросы Delphi 11 25.02.2011 22:06
Как сделать так чтобы окно формы всегда было поверх остальных окон? HelloZAPOR Общие вопросы Delphi 5 23.07.2007 08:05
Форма поверх всех окон (!!!) Viteef Общие вопросы Delphi 12 29.06.2007 00:22
Как создать программу-панель (как панель Msoffice), чтобы была поверх всех окон Romanbl4 Общие вопросы Delphi 6 27.06.2007 17:23
Форма поверх всех окон. Kamikadze_666 Общие вопросы Delphi 1 16.05.2007 07:10