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

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

Программа поверх всех окон


Rammst ©   (2002-03-19 06:17:00) 

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


SPeller   (2002-03-21 13:02:00) [1]

Проверенный способ:

procedure TForm1.FormDeactivate(Sender: TObject);
var TopWnd:Longint;rc:TRect;
begin
TopWnd:=GetForegroundWindow;
IF TopWnd=Handle Then Exit;
GetWindowRect(TopWnd,rc);
SetWindowPos(TopWnd,HWND_TOP,rc.Left,rc.Top,rc.Right-rc.Left,rc.Bottom-rc.Top,SWP_NOSIZE);
SetWindowPos(Handle,HWND_TOPMOST,0,0,Width,Height,SWP_NOSIZE or SWP_SHOWWINDOW);
end;

Поясню если не знаешь.
Если вдруг какое-то окно вылезет поверх твоего, то
1) Получаем его хэндл
2) Если он равен хэндлу твоего окна, то выходим
3) Если нет, то перемещаем чужое окно поверх всех простых окон
4) Помещаем твое окно поверх всехдругих

Предварительно надо при первом показе формы сделать следущее:
SetWindowPos(Handle,HWND_TOPMOST,0,0,Width,Height,0);

Если событие FormDeActivate не происходит при потере фокуса, то
Application.OnDeactivate:=FormDeactivate;


Song   (2002-03-21 09:11:00) [2]

Понятно, что не лезет. Свойство формы fsStayOnTop работает только относительно форм данногоприложения.
Для остальных приложений нужно по другому. Поищите плиз по поиску. Только я отвечал на этот вопрос раз 10.


Manulo   (2002-03-21 00:38:00) [3]

для alexec!!! НИФИГА!! :) Поверх DerextX приложений всё равно не лезет!!!


alexec   (2002-03-19 07:30:00) [4]

FormStyle := fsStayOnTop


Наверх

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