Главная страница
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.046 c
14-1116945369
DiamondShark
2005-05-24 18:36
2005.06.14
Лучше день потерять, потом за пять минут долететь?


14-1116917122
Layner
2005-05-24 10:45
2005.06.14
Яндекс.Деньги ворует деньги


1-1117283141
Flame
2005-05-28 16:25
2005.06.14
движение картинки


1-1117054440
lifo
2005-05-26 00:54
2005.06.14
Команды в консольных приложениях


1-1117011502
KSK
2005-05-25 12:58
2005.06.14
кнопки SpeedButton