Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как убивать окно в TaskBar?


Автор: User 14.4.2005, 13:23
Добрый день господа программисты.
Вот написал небольшой код, который позволяет помещать в панели задач с права мою прогу, но не как не могу избавиться от того что бы она не висела в TaskBar. Кто знает как такое сделать? Помогите! smile
TaskBar - полоска внизу экрана, где есть кнопочки для запущенных приложений

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormResize(Sender: TObject);
  private
    { Private declarations }
    procedure WMIconClick(var Message: TMessage); message WM_USER+1;
    procedure WMSize(var Message: TWMShowWindow); message WM_SHOWWINDOW;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses ShellApi;

procedure TForm1.Button1Click(Sender: TObject);
var
  idat: NotifyIconDataA;
begin
  idat.cbSize := sizeof(idat);
  idat.Wnd := self.Handle;
  idat.uID := 1;
  idat.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
  idat.uCallbackMessage := WM_USER+1;
  idat.hIcon := Application.Icon.Handle;
  idat.szTip := 'Hello!!!';
  Shell_NotifyIcon(NIM_ADD,@idat);
end;

procedure TForm1.WMIconClick(var Message: TMessage);
begin
  if Message.LParam=WM_LBUTTONDBLCLK then
  begin
   ShowWindow(Application.Handle,SW_SHOW);
   Button2Click(self);
  end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
  idat: NotifyIconDataA;
begin
  idat.cbSize := sizeof(idat);
  idat.Wnd := self.Handle;
  idat.uID := 1;
  Shell_NotifyIcon(NIM_DELETE,@idat);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Button2Click(self);
end;

procedure TForm1.FormResize(Sender: TObject);
begin
 if self.Visible = false then
 begin
   ShowWindow(Application.Handle,SW_HIDE);
   Button1Click(self);
 end;
end;

procedure TForm1.WMSize(var Message: TWMShowWindow);
begin
  if Message.Status=SW_PARENTCLOSING then
  begin
   ShowWindow(Application.Handle,SW_HIDE);
   Button1Click(self);
   Message.Result := 1;
  end;
end;

end.

Автор: Александра 14.4.2005, 14:07
User
ShowWindow(Application.Handle,SW_HIDE); прекрасно должно прятать твою кнопку.

Автор: User 14.4.2005, 14:54
И прячет токо не в тот момент когда надо, поэтому показывает ее снова. А я не знаю когда прятать надо.

Автор: User 14.4.2005, 15:07
Идея проста, свертываем окно, минимизируем, из TaskBar пропадает все и появляется в SystemTray. И наоборот поднимаеим прогу (максисизируем) из SystemTray и появляется в TaskBar.

Автор: Alex 14.4.2005, 16:57
http://vingrad.ru/DELPHI-DLP-000407

Автор: Albinos_x 14.4.2005, 18:19
Код

program MyProg;

uses
  Forms,
  Windows,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

Автор: Dimannn 15.4.2005, 09:54
Cкачай компоненты RXlib. Там есть RXTrayIcon.

Автор: User 15.4.2005, 11:37
Всем большущее спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)