Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Как спрятать програму от Alt+Tab   Найти похожие ветки 

 
anjey   (2005-04-20 15:08) [0]

Как спрятать програму от Alt+Tab?
при этом форма проги должна остатся видимой


 
alpet ©   (2005-04-20 15:23) [1]


procedure TForm1.FormShow(Sender: TObject);
var h: THandle;
begin
ShowWindow (application.Handle, sw_hide);
h := FindWindow (nil, "Program Manager");
windows.setparent (handle, h);
end;


 
anjey   (2005-04-20 15:42) [2]

все конечно работает
но теперь вопрос как установить для формы параметры (поверх всех окон и т.д.)?


 
alpet ©   (2005-04-20 16:08) [3]

WINAPI:
SetWindowPos (form1.handle, HWND_TOPMOST, 0, 0, 0, 0,
SWP_NOSIZE or SWP_NOMOVE);
VCL:

procedure TForm.FormCreate (Sender: TObject);
begin
FormStyle := fsStayOnTop;
end;


 
anjey   (2005-04-20 16:33) [4]

мда ...
вот такая бойда у меня
есть основная форма (при запуске невидима) на ней куча всяких настроек (вызывается из трея) в частности как должна выглядеть вторая форма (поверх всех окон или нет, прозрачная - или нет)
вторая форма видима - на ней отображается текущее время и пр.
из панели задач обе формы я убрал, но  все они видны через Alt+Tab при отображении  на экране
тобиш

.....
MainForm.FormCreate(Sender: TObject);
begin
 // непоказывать окно приложения
 Application.ShowMainForm := False;
 // скрыть окна из панели задач
 SetWindowLong (Application.Handle,GWL_EXSTYLE,NOT WS_EX_APPWINDOW);
 ....
end;

во втром модуле кроме обработчика события на таймере ничего нет
при использовании
h := FindWindow (nil, "Program Manager");
windows.setparent (handle, h);

все попытки настроить вид второй формы бесполезны


 
alpet ©   (2005-04-20 17:26) [5]

SetWindowLong убери - ты не прочитал справку, а функцию уже добавил. Более того, какой бы ты стиль не задал окну из списка "Окон приложений" ты его не уберешь. Это определяется прежде всего отношениями окон. Если у видимого окна нет родителя, оно имеет все шансы в этот список попасть.


 
alpet ©   (2005-04-20 17:28) [6]

Чтобы убрать и вторую форму к строкам

h := FindWindow (nil, "Program Manager");
windows.setparent (handle, h);

добавь

windows.setparent (form2.handle, h);


 
anjey   (2005-04-21 10:01) [7]

я немного поиграл с параметрами SetWindowLong (без windows.setparent)
вроде получается тока есть пару но
- вид основного окна как у окна инструментов
- при включении поверх всех окон все настройки сбрасываются и форма видна по Alt+Tab

 // непоказывать окно приложения
 Application.ShowMainForm := False;
 SetWindowLong (Application.Handle,GWL_EXSTYLE,NOT (WS_EX_APPWINDOW ));
 SetWindowLong (Основная форма.Handle,GWL_EXSTYLE, GetWindowLong (Основная форма,GWL_EXSTYLE) OR WS_EX_TOOLWINDOW);
 SetWindowLong (Вторая форма.Handle,GWL_EXSTYLE, GetWindowLong (Вторая форма.Handle,GWL_EXSTYLE) OR WS_EX_TOOLWINDOW);



Страницы: 1 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
4-1114002475
Mike Evteev
2005-04-20 17:07
2005.06.14
Как поставить задачу на удаленный принтер?


1-1117468406
PIF
2005-05-30 19:53
2005.06.14
Компиляция res файла


4-1113930130
Studentik
2005-04-19 21:02
2005.06.14
Создание одноэкземплярного приложения с осложнением...


11-1099049285
Юрий Ж.
2004-10-29 15:28
2005.06.14
Не могу скачать новую версию KOL.


1-1116922813
r13
2005-05-24 12:20
2005.06.14
Мерцание формы