невидимость
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.
Заранее большое спасибо.
Как можно диалоговое окно с компонентами спрятать,
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.
Хороший вопрос. :D Сам-то понял, что сказал?
Если диалоговое окно спрятать, то как при этом оно может работать? Кто же его работать-то будет?
Как можно диалоговое окно с компонентами спрятать,
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.
Заранее большое спасибо.
ShowWindow(Form1.Handle, SW_HIDE)
Чтобы спрятать в процессах, необходимо зарегить твою прогу как службу.
Как можно диалоговое окно с компонентами спрятать,
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.
Заранее большое спасибо.
TForm1.Hide
Если спрятать приложение, то перед вызовом Application.Run нужно Application.ShowMainForm:=false (точно не помню, как называется своиство, но по моему ShowMainForm)
Как можно диалоговое окно с компонентами спрятать,
тоесть - чтоб его небыло видно и оно не отображалось в панели задач
(ели можно то и в поцессах), и при етом нормально работало.
Заранее большое спасибо.
Внеся изменения в свой проект вы получите приложение, которое не видно в 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;
Создавай прогу как сервис File->New->other->Services
ShowWindow(Application.Handle, SW_HIDE);
в OnShow главной формы?
Если хочешь писать нечто работающее в фоновом режиме - делай сервис.