Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

невидимость

5.3K
04 ноября 2004 года
mtx_g
12 / / 01.10.2004
Как можно диалоговое окно с компонентами спрятать,
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.
Заранее большое спасибо.
10
04 ноября 2004 года
Freeman
3.2K / / 06.03.2004
Цитата:
Originally posted by mtx_g
Как можно диалоговое окно с компонентами спрятать,
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.


Хороший вопрос. :D Сам-то понял, что сказал?

Если диалоговое окно спрятать, то как при этом оно может работать? Кто же его работать-то будет?

302
05 ноября 2004 года
Sagittarius
648 / / 12.04.2003
Цитата:
Originally posted by mtx_g
Как можно диалоговое окно с компонентами спрятать,
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.
Заранее большое спасибо.


ShowWindow(Form1.Handle, SW_HIDE)
Чтобы спрятать в процессах, необходимо зарегить твою прогу как службу.

303
26 ноября 2004 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by mtx_g
Как можно диалоговое окно с компонентами спрятать,
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.
Заранее большое спасибо.



TForm1.Hide

Если спрятать приложение, то перед вызовом Application.Run нужно Application.ShowMainForm:=false (точно не помню, как называется своиство, но по моему ShowMainForm)

8.3K
28 ноября 2004 года
gh05t
10 / / 28.11.2004
Цитата:
Originally posted by mtx_g
Как можно диалоговое окно с компонентами спрятать,
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.
Заранее большое спасибо.



Внеся изменения в свой проект вы получите приложение, которое не видно в TaskBar и на него нельзя переключиться по Alt-Tab

program Project1;
uses Forms,Windows,Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
var
ExtendedStyle : integer;
begin
Application.Initialize;
ExtendedStyle:=GetWindowLong(application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle, GWL_EXSTYLE,
ExtendedStyle or WS_EX_TOOLWINDOW {AND NOT WS_EX_APPWINDOW});
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Если написать этот код в своей программе, то получите очень интересное приложение. Оно не видно в TaskBar и на него нельзя переключиться по Alt-Tab, но когда приложение минимизируется оно остается на рабочем столе в виде свернутого заголовка (прямо как в старом добром Windows 3.11)
Только сpазу пpедупpеждаю пpо гpабли, на котоpые я наступал:
Будь готов к тому, что если пpи попытке закpытия пpиложения в OnCloseQuery или OnClose выводится вопpос о подтвеpждении, то могут быть пpоблемы с автоматическим завеpшением пpогpаммы пpи shutdown - под Win95 пpосто зависает, под WinNT не завеpшается. Очевидно, что сообщение выводится, но его не видно (пpичем SW_RESTORE не сpабатывает). Решение - ловить WM_QueryEndSession и после всяких завеpшающих действий и вызова CallTerminateProcs выдавать Halt.

А вот как отрубить показ файла в Ctrl-Alt-Del(Win98 only):

function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall;
external 'KERNEL32.DLL';
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin //Hide
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin //Show
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);
end;

6.0K
15 июля 2006 года
artyom-tyanutov
107 / / 10.07.2006
А не в Win98???
16K
17 июля 2006 года
medved_68
36 / / 06.07.2006
[QUOTE=artyom-tyanutov]А не в Win98???[/QUOTE]
Создавай прогу как сервис File->New->other->Services
339
19 июля 2006 года
verybadbug
619 / / 12.09.2005
а как на счёт
ShowWindow(Application.Handle, SW_HIDE);
в OnShow главной формы?
5
19 июля 2006 года
hardcase
4.5K / / 09.08.2005
В подавляющем большинстве случаев "скрывание" главного окна от пользователя - это признак кривого проектирования программы, к тому же может вызывать раздражение у пользователя.
Если хочешь писать нечто работающее в фоновом режиме - делай сервис.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог