Главная страница
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
3-81153
Фикус
2002-07-04 08:26
2002.07.25
Backup - Restore командной строкой


1-81308
Spooky
2002-07-12 10:10
2002.07.25
Вставка строки в ячейку Grid по нажатию кнопки


3-81173
Draculenok
2002-07-04 11:44
2002.07.25
Как ввести Заглавную букву


1-81234
nexus
2002-07-11 23:25
2002.07.25
файлы


1-81353
john_dow
2002-07-13 13:45
2002.07.25
Таблицы в RichEdit-e