Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.25;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
14-81440
vixic
2002-06-27 16:20
2002.07.25
Почтовый сервер и клиент для локальной сети?


4-81511
Alibaba
2002-05-20 17:23
2002.07.25
Error 216?


7-81493
fore_3
2002-05-07 12:39
2002.07.25
Как послать логическую 1 на нужную ножку lpt порта


1-81340
Kotka
2002-07-11 22:02
2002.07.25
Я псих, но все-таки, кто знает, как написать патч для моей проги


1-81370
Goblinus
2002-07-13 19:18
2002.07.25
Convert





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский