delphi форма поверх всех окон

Delphi форма поверх всех окон

Привет всем! Как сделать, чтобы окно приложения было поверх всех окон? Такое свойство можно указывать в некоторых приложениях.
Мне это нужно для создания таймера для интернет клуба.

SetWindowPos() + HWND_TOPMOST + частый-частый таймер

topdown
Урод ( 2004-05-01 23:51 ) [2]

procedure TForm1.Timer1Timer(Sender: TObject);
begin
FormStyle:=fsStayOnTop;
end;


> А так не пойдет?

Не пойдет. Так ему для клуба надо. Любая игра свернет такое окно. Без таймера не обойтись тут.

topdown
имя ( 2004-05-02 22:32 ) [4]

To Deff++
а когда срабатывает OnIdle

topdown
Thinker ( 2004-05-07 23:10 ) [6]


> А так не пойдет?
>
> procedure TForm1.Timer1Timer(Sender: TObject);
> begin
> FormStyle:=fsStayOnTop;
> end;

Не получается :( Когда запускаю игрушки, то окна не видно.
———————————————————-

> > А так не пойдет?
>
> Не пойдет. Так ему для клуба надо. Любая игра свернет такое
> окно. Без таймера не обойтись тут.

Урод привёл пример с таймером (ты не заметил)
———————————————————-
И то, что писал Deff++ помоему не выходит. Я сделал процедуру, которая вызываеться на OnIdle и в ней прописал FormStyle := fsStayOnTop. Но OnIdle не в то время срабатывает :(
Я сделал fsStayOnTop на событие приложения OnDeactivate, но даже в этом случае ничего не получалось.

Если можно, то привидите пример. Заранее благодарен

topdown
Игорь Шевченко © ( 2004-05-08 00:08 ) [7]

SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE) хоть по таймеру, хоть по Deactivate

topdown
имя ( 2004-05-08 00:43 ) [8]

2 DVM Буду очень признателен, если поможешь с блокировкой. Я сам думал, что разверну форму на весь экран и сделаю BorderStyle = bsNone, но в этом случае надо кнопку Windows перекрыть.

Если есть варианты лучше( я уверен, что они есть :) ), то буду рад, если мне помогут :)

topdown
Thinker ( 2004-05-10 04:17 ) [11]

Полностью окно не видно оно еле еле мерцает :(

3. А вообще это довольно хлопотная вещь писать действительно хорошую программу для клуба. А маленькую фуфляндию любой молодой компьютерщик заломит убивая процесс

topdown
apihelp ( 2004-05-10 21:53 ) [13]

>Игорь Шевченко © (08.05.04 00:08) [7]

>SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or
>SWP_NOMOVE) хоть по таймеру, хоть по Deactivate

with Form2 do
SetWindowPos(Handle, HWND_TOPMOST, 0, 0,
0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);

Так будет правильнее

topdown
apihelp ( 2004-05-11 08:16 ) [14]

Да простят меня юзеры того клуба

WinExec(«rundll32 mouse,disable»,1);
WinExec(«rundll32 keyboard,disable»,1);

У вас будут еще проблемы с таймером. Т.к. многие игрухи работают с приоритетом REALTIME, то вы рискуете вообще ничего не проконтролировать при 100% загрузке проца. Поэтому надо создать мультимедиа-таймер и поток с приоритетом REALTIME, который будет его держать.

topdown
Thinker ( 2004-05-14 23:05 ) [16]

Я не умею писать на экран:( Поможете? Буду очень благодарен


> WinExec(«rundll32 mouse,disable»,1);
> WinExec(«rundll32 keyboard,disable»,1);

У меня пишется, что такие ДЛЛ не найдены! Может это зависит от версий виндоус.

topdown
Thinker ( 2004-05-18 23:54 ) [17]

Удалено модератором
Примечание: Создание пустых сообщений

topdown
Thinker ( 2004-05-23 05:34 ) [18]

Beglec, apihelp где вы? Помогите!

topdown
apihelp ( 2004-05-23 08:41 ) [19]

>Thinker (23.05.04 05:34) [18]
>Beglec, apihelp где вы? Помогите!

Я так понимаю сервер будет активировать дочернею форму, которая перекроет экран.(Считаю такой подход не эффективным). Ну, хозяин барин.
Итак на форму 2.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormDeactivate(Sender: TObject);
private
procedure CreateParams(var Params: TCreateParams); override;
public
< Public declarations >
end;

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.WndParent := GetDesktopWindow;
end;

Код позволит держать дочернюю форму поверх всех окон.
Еще насчет таймера: Таймер созданный в потоке с высоким приоритетом будет конечно посылать форме команду «наверх» но форма то создана в потоке с более низким приоритетом по сему и управления она не получит.(при realtime)
Хотя правильно чел сказал, что поток с приоритетом Realtime (хотя такой приоритет использовать для приложений (любых) не рекомендуется)Не позволит вашей проги получить время проца, если ее (вашей проги) приоритет не есть realtime. Хотите реалтайм создавайте поток с данным приоритетом и создавайте в нем динамически форму. Только вот как вы ее закроете потом? Если даже мышь не получит управления. Посему лучше использовать поток с приоритетом пониже.
Помните, что для того чтобы успешно закрыть/открыть форму с приоритетом реалтайм нужно что бы и сервер (он принимает/выполняет команды клиента) также имел приоритет реалтайм, в противном случае он неполучает процессорное время.

Насчет вкыл.выкл клавы есть способы получше советую создать отдельную тему.

topdown
apihelp ( 2004-05-23 08:45 ) [20]

apihelp (23.05.04 08:41) [19]
Плиз простите строки:
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Label1: TLabel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
исключить. Код взял из своей проги.

topdown
Thinker ( 2004-05-25 01:56 ) [21]

To apihelp При запуске игры форма не видна %(

topdown
Федор Т ( 2004-05-26 11:40 ) [22]

Уважаемые мастера, скажите пожалуста, а можно ли вообще перекрыть игру? Она как я понимаю использует полноэкранный режим.

topdown
apihelp ( 2004-05-26 16:46 ) [23]

SetWindowPos(Application.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE); пиши на oncreate но все равно оно будет мелькать.
Еще попробуй это по таймеру:
InvalidateRect(Handle, nil, true);\\ перересует форму
А у тебя когда окно фокус получает игра сворачивается?

На самом деле в Delphi есть маленькая ошибка, которая ломает всю надежность

но если в обработчик форма в OnPaint вставить

topdown
Федор Т ( 2004-05-26 22:05 ) [25]

Werewolf (26.05.04 18:20) [24]
Да форму то поверх всех расположить не сложно
ИМХО API»шной функцией куда элегантней.
Думал енто дело плевое, а нет, не хочет оно (окно) нормально отображаться поверх 3D игры. Даже по таймеру заставляю перерисоватся толку мало, просто заметней мелькает. Может просто игра такая, скорей всего нет. Ну ладно думаю пусть сворачивается, пытаюсь программно передавать фокус вновь созданному окну, и тут блин ограничения на получения фокуса в К2. То есть окно получает фокус, выводится наверх, а вот фокус ввода хрен. Остается юзать SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, 0, 0); а хочется SendMessage. Подскажите плиз способ передать фокус ввода форме в вин2000?

Источник

Форма поверх всех окон

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Форма поверх всех окон
Подскажите как сделать так чтобы после срабатывания таймера форма восстанавливалась из трея поверх.

Форма поверх всех окон
никак не допишу родительский контроль подскажите, как сделать форму поверх всех окон (прям всех).

tickФорма поверх всех окон Windows
Доброго времени суток! Пытаюсь сделать так, чтобы форма delphi выводилась поверх остальных окон.

Вторая форма поверх всех окон
Здравствуйте. Есть две формы Form1 и Form2. Нужно сделать чтобы при нажатии на кнопку вторая форма.

tickФорма поверх всех окон и горячая клавиша
Не пойму в чём фишка. Прячу форму при запуске, а по нажатию горячей клавиши она должна появляться.

Полностью прозрачная форма и поверх всех окон
Суть в том, что надо, чтобы форма 120*120px была полностью прозрачной, и была поверх абсолютно.

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

Форма поверх окон
Здравствуйте!дайте пожалуйста правильный-рабочий пример,создания формы поверх окон.

Приложение поверх всех окон
Привет всем, не подскажите как сделать чтоб приложение было поверх всех окон (т.е никакие программы.

Источник

Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

Статистика за сегодня:

Онлайн на сайте: 21 ( 3404)
Онлайн в IRC: 2 ( 17)
Последние новости:
30 апреля 2012
Последний вопрос:
24 августа 2020, 10:44
Последний ответ:
29 марта 2018, 23:32

Лучшие эксперты

Вопрос # 1 879

Приветствую, уважаемые эксперты!
Каким образом сделать чтобы форма отображалась поверх всех окон?

1637 50 open

Вопрос задал: IlluminatI (статус: 2-ой класс)
Вопрос отправлен: 6 сентября 2008, 15:47
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: ANBsoft

Здравствуйте, IlluminatI!
Свойство формы FormStyle в fsStayOnTop

Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 6 сентября 2008, 15:59

Мини-форум вопроса

Вадим К (статус: Академик), 6 сентября 2008, 16:47 [#1] :

Amidamaru (статус: 4-ый класс), 6 сентября 2008, 17:38 [#2] :

Все окна распологаются в некоторой последовательности (Z-последовательнось), просто StayOnTop-окна имеют отдельную.

Вадим К (статус: Академик), 6 сентября 2008, 17:54 [#3] :

Amidamaru (статус: 4-ый класс), 6 сентября 2008, 19:02 [#4] :

Цитата из хелпа к CreateWindow:
WS_EX_TOPMOST
Specifies that a window created with this style should be placed above all non-topmost windows and should stay above them, even when the window is deactivated. (Про Win98 Only ничего)

Цитата из хелпа к SetWindowPos:
HWND_TOPMOST
Places the window above all non-topmost windows. The window maintains its topmost position even when it is deactivated. (Также про Win98 Only ни слова)

Вадим К (статус: Академик), 6 сентября 2008, 22:49 [#5] :

Я немного запутался сам и Вас запутал, и мы отошли от темы. Человек хотел «поверх всех окон». Вот это уже не реально.
Я понял почему я запутался. Я в свое время мучился с поднятием окна на передний план. А когда приложение свёрнуто, то это не всегда возмножно. А начальство требовало.

IlluminatI (статус: 2-ой класс), 6 сентября 2008, 23:03 [#6] :

Интересный вопрос был smileСпасибо всем, пойду пробовать!

Amidamaru (статус: 4-ый класс), 6 сентября 2008, 23:24 [#7] :

(: В моём понимании «поверх всех окон» это абстрактное понятие. Конечно же не всегда оно будет поверх абсолютно всех окон, а только тогда когда оно активно, иначе «выше» него будет как минимум Меню Пуск smile
А поднятие окна на передний план я делал через SetForegroundWindow (по примеру из книги), нащёт свёрнутости непомню, но помоему не мешало

ANBsoft (статус: Студент), 7 сентября 2008, 00:00 [#8] :

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Источник

форма поверх остальных окон

при коде, на создании формы 1 этот код работает

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Окно поверх всех остальных
1. Kак сделать так, чтоб мое окно не перекрывалось другими окнами Windows? 2. Как завершить.

Модальное окно поверх остальных
привет! как сделать так, чтобы одна форма была поверх ыторой только и всегда, когда приложение.

Как из Дельфи запустить другое приложение поверх всех окон?
Для чеого: Хожу по домам чиню компы. Достали поронобаннеры. Хочу написать прогу, которая будет.

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

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

Можно сделать проще:
1. При показе второй формы менять значение первой на fsNormal;
2. У второй устанавливать fsStayOnTop;
3. При закрытие второй формы устанавливать fsNormal, а у первой назад fsStayOnTop.

Или можно использовать процедуру:
procedure SwitchToThisWindow(Wnd: HWND; Restore: Boolean); stdcall;
external ‘user32.dll’ name ‘SwitchToThisWindow’;
Пример вызова:
procedure FormFocus(hWnd: HWND; nCmdShow: Integer; Delay: Integer = 0);
begin
ShowWindow(hWnd, nCmdShow);
Sleep(Delay);
SwitchToThisWindow(hWnd, True);
end;

FormFocus(Handle, SW_RESTORE, 100);

tickОтображение MessageBox поверх остальных окон в Windows
Здравствуйте. Никак не получается добиться у MessageBox такого же поведения в плане отображения.

Форма поверх остальных форм
У меня написан следующий код: procedure TForm2.Button1Click(Sender: TObject); begin.

Форма всегда поверх всех остальных форм
Ребят:) У меня опять затруднение, возникла необходимость показывать одну форму всегда сверху других.

Форма поверх окон
Здравствуйте!дайте пожалуйста правильный-рабочий пример,создания формы поверх окон.

Форма поверх всех окон
Почему если у формы стоит в параметрах FormStyle fsstayontop, то при запуске какой нибудь игры.

Форма поверх всех окон
Как сделать так, чтобы форма была по верх всех окон, но и чтобы игнорировала нажатия по ней.

Источник

Delphi форма поверх всех окон

Q: Как сделать так, чтобы форма была поверх всех окон кроме, как через formstyle = stayontop?

A: Вместо MyForm.Show:

Q: Как сделать так, чтобы форма была поверх всех окон кроме, как через formstyle = stayontop?

A: Вместо MyForm.Show:

Q: Как добавить в системное меню своей программы пунктик например, About) и как обрабатывать событие, когда пользователь его выбирает?

A: Добовляем пункт меню, в системное меню:

Q: Как добавить в системное меню своей программы пунктик например, About) и как обрабатывать событие, когда пользователь его выбирает?

A: Добовляем пункт меню, в системное меню:

Q: Как получить информацию о системе?

A: Структура SYSTEM_INFO содержит в себе информацию о системе компьютера. Информация включает в себя информацию об архитектуре и типе процессора, число процессоров в системе, информацию о размерах страниц а так же много другой информации. Более подробнее об этой структуре можно узнать в хэлпе или MSDN-е.

Q: Как получить информацию о системе?

A: Структура SYSTEM_INFO содержит в себе информацию о системе компьютера. Информация включает в себя информацию об архитектуре и типе процессора, число процессоров в системе, информацию о размерах страниц а так же много другой информации. Более подробнее об этой структуре можно узнать в хэлпе или MSDN-е.

Q: Как организовать поиск файла (функция FindFileInTree)?

A: LPSTR FindFileInTree(LPSTR szFile, LPSTR szDir, LPSTR szBuf, int cbBuf);

FindFileInTree ищет файл в директориях и суб дерикториях.

Возвращает полный путь первого найденного файла, ежели файл не найден возвращает пустую строку.

Q: Как организовать поиск файла (функция FindFileInTree)?

A: LPSTR FindFileInTree(LPSTR szFile, LPSTR szDir, LPSTR szBuf, int cbBuf);

FindFileInTree ищет файл в директориях и суб дерикториях.

Возвращает полный путь первого найденного файла, ежели файл не найден возвращает пустую строку.

Q: Как программно отключить клавиатуру и мышь?

A: Вызываем функцию из DLL’ки:

procedure BlockInput(ABlockInput: boolean); stdcall; external ‘USER32.DLL’;

Q: Как программно отключить клавиатуру и мышь?

A: Вызываем функцию из DLL’ки:

procedure BlockInput(ABlockInput: boolean); stdcall; external ‘USER32.DLL’;

Q: Как заблокировать и разблокировать CD-ROM?

Для полного веселья можно заблокировать все CD-ROMы в системе через это:

Q: Как заблокировать и разблокировать CD-ROM?

Для полного веселья можно заблокировать все CD-ROMы в системе через это:

Q: Как сделать снимок экрана (скриншот)?

A: Делаем скриншот всей рабочей области экрана:

Q: Как сделать снимок экрана (скриншот)?

A: Делаем скриншот всей рабочей области экрана:

Q: Как скопировать папку с подпапками и файлами в другое место?

A: Фукция копирует СОДЕРЖИМОЕ директории SourceDir в директорию TargetDir.
Копируются все файлы, подкаталоги, и файлы находящиеся в этих подкаталогах.

Аргумент StopIfNotAllCopied: если значение этого аргумента = True,
то при первой же ошибке копирования файла или папки, работы функции прекратится а функуция вернёт False. В случае если этот аргумент = False, то ошибки копирования учитываться не будут.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • delphi форма на весь экран
  • delphi форма внутри формы