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

Вниз

панель задач   Найти похожие ветки 

 
МишаК   (2006-07-02 20:47) [0]

как сделать так что бы прогр-ма не отображалась на панели задач?


 
Mr.Floppy   (2006-07-02 20:54) [1]

Сходи, купи книгу или научись пользоваться поисковиком

Вопрос

Как сделать так, чтобы запущенная программа не была видна на панели задач?
Ответ

Во-первых, можно по примеру Back Orifice воспользоваться функцией RegisterServiceProcess (только для Win9x).
Во-вторых, предположим, вы пользуетесь компонентой TrxTrayIcon из rxLib, иначе непонятно, как вы будете возвращать программу обратно из минимизированного состояния.

type
 TForm1 = class(TForm)
   Label1: TLabel;
   RxTrayIcon1: TRxTrayIcon;
   procedure FormCreate(Sender : TObject);
   procedure RxTrayIcon1DblClick(Sender: TObject);
 private
   procedure ApplicationMinimize(Sender : TObject);
   procedure ApplicationRestore(Sender : TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
   Application.OnMinimize := ApplicationMinimize;
   Application.OnRestore := ApplicationRestore;
   ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.ApplicationMinimize(Sender : TObject);
begin
   ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.ApplicationRestore(Sender : TObject);
begin
   ShowWindow(Application.Handle, SW_RESTORE);
end;

procedure TForm1.RxTrayIcon1DblClick(Sender: TObject);
begin
   Application.Restore;
   Application.BringToFront;
end;

Только сpазу предупреждаю про некоторые проблемы — будь готов к тому, что если пpи попытке закрытия приложения в OnCloseQuery или OnClose выводится вопрос о подтверждении, то могут быть проблемы с автоматическим завершением пpогpаммы пpи shutdown — под Win95 просто зависает, под WinNT не завершается. Очевидно, что сообщение выводится, но его не видно (причем SW_RESTORE не сpабатывает). Решение — ловить WM_QUERYENDSESSION и после всяких завеpшающих действий и вызова CallTerminateProcs выдавать Halt.

Из конференции Delphi

Вопрос

Необходимо скрыть приложение. Так чтоб его не было на панели задач и не было видно под Ctrl+Alt+Del? Желательно пример кода или ссылки на него?

Ответ

function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external "KERNEL32.DLL"; procedure TForm1.Button1Click(Sender: TObject); begin RegisterServiceProcess(GetCurrentProcessId, 1); //Убираем из Alt-Ctrl-Del (0 — показать) ShowWindow(Application.Handle, SW_HIDE); //Убираем из TaskBar SetWindowLong(Application.Handle, GWL_EXSTYLE, //Убираем само приложение GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW); end;

Из конференции Expert_FAQ

soobcha.org


 
antonn ©   (2006-07-03 05:34) [2]

SetWindowLong(application.Handle, GWL_EXSTYLE,GetWindowLong(application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);


 
Elen ©   (2006-07-03 08:02) [3]


> как сделать так что бы прогр-ма не отображалась на панели
> задач?

Еще один вариант

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm:=false;
end;


 
PSPF2003 ©   (2006-07-03 08:59) [4]

Вот как делаю я.
Открываем *. Dpr
В секции Uses дописываем Windows

Ниже объявляем
EStyle : integer;

И делаем присваивание

EStyle := GetWindowLong(Application.Handle , GWL_EXSTYLE);

И устанавливаем стиль.

SetWindowLong(Application.Handle , GWL_EXSTYLE, EStyle or WS_EX_TOOLWINDOW);

Полный вид :

program Fast;

uses
 Forms,
 Windows,
 Unit1 in "Unit1.pas" {FastForm},
 Unit2 in "Unit2.pas" {ExtFile};

{$R *.res}
var
EStyle : integer;

begin
 Application.Initialize;
 EStyle := GetWindowLong(Application.Handle , GWL_EXSTYLE);
 SetWindowLong(Application.Handle , GWL_EXSTYLE, EStyle or WS_EX_TOOLWINDOW);
 Application.Title := "Fast";
 Application.CreateForm(TFastForm, FastForm);
 Application.Run;
end.



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

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

Наверх




Память: 0.48 MB
Время: 0.035 c
15-1151242133
dmitry99
2006-06-25 17:28
2006.07.23
Новосибирску 113 лет!


15-1150816031
UMU
2006-06-20 19:07
2006.07.23
ShareWare программы


15-1150734006
Ketmar
2006-06-19 20:20
2006.07.23
профессиональная деформация...


9-1132093005
XCoder
2005-11-16 01:16
2006.07.23
Стоит ли учить DirectX?


2-1151918291
salexn
2006-07-03 13:18
2006.07.23
MessageBox и зависание программы