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

Вниз

TaskBar   Найти похожие ветки 

 
Yurko   (2002-07-10 04:03) [0]

Как 100% спрятать свою прогу из TaskBar?
(без мигания при minimize и restore)


 
TTCustomDelphiMaster ©   (2002-07-10 08:36) [1]

Попробуй так
procedure TForm1.ApplicationEvents1Activate(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;


 
IlyaA   (2002-07-10 09:38) [2]

Можно просто Form.Hide


 
Yurko   (2002-07-11 00:42) [3]

Form.Hide спрячет форму, а не кнопку в TaskBar!


 
Юрий Зотов ©   (2002-07-11 00:50) [4]

В обработчике OnCreate главной формы (или в самом dpr перед Application.Run) пишем одну строку:
Application.ShowMainForm := False;


 
Yurko   (2002-07-13 01:22) [5]

Спасибо, Юрий, но так прячется и форма и кнопка, а мне нужно скрыть только кнопку, да так, чтоб она не появлялась даже на время минимизации!


 
TTCustomDelphiMaster ©   (2002-07-13 10:02) [6]


> Yurko (13.07.02 01:22)
> ... да так, чтоб она не появлялась даже на время минимизации!

А как ты потом будеш restor"ить приложение?


 
Yurko   (2002-07-13 12:08) [7]

При минимизации я вывожу иконку в tray, из нее я и буду restor"ить приложение!


 
Anatoly Podgoretsky ©   (2002-07-13 12:47) [8]

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


 
Yurko   (2002-07-14 02:22) [9]

Спасибо огромное, Анатолий!!!
Может Вы знаете где можно почитать о всех стилях окна (XXXWindowLong)? Дайте, пожалуйста, пару ссылок (или пару примеров <yurko@home.te.ua>).


 
Юрий Зотов ©   (2002-07-14 03:12) [10]

> где можно почитать о всех стилях окна

В справке API - см. CreateWindow и CreateWindowEx


 
Yurko ©   (2002-07-14 04:22) [11]


> Anatoly Podgoretsky

Если делать так, как Вы предложили, то окно сворачивается (при минимизации) в иконку над кнопкой "Пуск" (как в MDI-приложении).
Как можно этого избежать?


 
TTCustomDelphiMaster ©   (2002-07-14 11:46) [12]

Убери вообще эту кнопку. Зачем она нужна в твоем приложении?


 
Yurko ©   (2002-07-14 12:13) [13]

Какую кнопку???


 
TTCustomDelphiMaster ©   (2002-07-14 12:48) [14]


> Yurko © (14.07.02 12:13)
> Какую кнопку???

кнопку минимизации
в object inspector в свойстве формы bordericons biMinimize = false


 
Anatoly Podgoretsky ©   (2002-07-14 13:15) [15]

Тебе говорят зачем минимизируешь, на самом деле нет же никакой минимизации, ты же просто прячешь форму!


 
Юрий Зотов ©   (2002-07-14 14:31) [16]

О, боже...

Почти неделю человек мучается. Над чем?

Да не нужны Вам никакие стили, все гораздо проще. Нужно всего лишь обработать WM_SYSCOMMAND и при минимизации в трей загнать иконку, а Application.MainForm сделать невидимой - именно так, как я и написал. А при восстановлении из трея, соответственно, наоборот - только еще надо вызвать ShowWindow, чтобы скрыть кнопку приложения на панели задач, раз уж так этого хочется.

Вот и все. И все так делают, это стандартный интерфейс трей-приложений. Короче, вот полный код. Программа стартует сразу в трее, показывается из него двойным щелчком по иконке, а при минимизации снова прячется в трей. На панели задач не видна.


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Forms, ShellAPI, Menus;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
FIconData: TNotifyIconData;
protected
procedure WndProc(var Message: TMessage); override;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

const
UM_TRAY = WM_USER + 1;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
with FIconData do
begin
cbSize := SizeOf(FIconData);
Wnd := Handle;
uID := 100;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := UM_TRAY;
hIcon := Application.Icon.Handle;
StrPCopy(szTip, Application.Title)
end;
Application.ShowMainForm := False;
Shell_NotifyIcon(NIM_ADD, @FIconData)
end;

procedure TForm1.WndProc(var Message: TMessage);
begin
case Message.Msg of
WM_SYSCOMMAND:
if TWMSysCommand(Message).CmdType and $FFF0 = SC_MINIMIZE then
begin
Shell_NotifyIcon(NIM_ADD, @FIconData);
Application.MainForm.Visible := False
end
else inherited;
UM_TRAY:
if Message.LParam = WM_LBUTTONDBLCLK then
begin
Application.MainForm.Visible := True;
ShowWindow(Application.Handle, SW_HIDE);
Shell_NotifyIcon(NIM_DELETE, @FIconData)
end;
else inherited
end
end;

end.




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

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

Наверх




Память: 0.5 MB
Время: 0.01 c
8-81379
SemenK
2002-03-19 20:35
2002.07.25
*.GIF


14-81430
Shefard
2002-06-27 11:21
2002.07.25
delphi


1-81229
Builder
2002-07-14 08:48
2002.07.25
Минимизация в трей вместо закрытия


1-81304
Smok_er
2002-07-12 11:26
2002.07.25
Совместимость компонента TWebBrowser с IE


3-81125
DKalinin
2002-07-02 15:31
2002.07.25
что это? - Rowset position cannot be restarted