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

Вниз

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

 
dkDimon ©   (2002-12-08 01:34) [0]

Мастера, подскажите, плиз, как правильно сворачивать приложение в СисТрей вообще и в частности чтобы приложение при запуске автоматически сворачивалось в трей. + правильное восстановление окна из трея.


 
S@M_vvv   (2002-12-08 01:43) [1]

Procedure ic(a:boolean);
var nim:tnotifyicondata;
begin
with nim do
begin
cbSize:=sizeof(nim);
wnd:=form1.Handle;
uid:=1;
uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
hicon:=Application.Icon.Handle;
uCallbackMessage:= wm_user+1;
szTip:="это всплывающая подсказка";
end;
if a then shell_notifyicon(nim_add,@nim) else
shell_notifyicon(nim_delete,@nim);
end;
где-то в программе.. ic(true); application.Minimize;
для восстановления : ic(false);application.Restore;


 
Юрий Зотов ©   (2002-12-08 01:51) [2]

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.


 
Berg   (2002-12-09 10:11) [3]

>>Юрий Зотов © (08.12.02 01:51)
Хороший пример, только с восстановлением не понял, окно сворачивается и его остается только вырубать по CTRL+ALT+DEL, а куда иконка девается?


 
Song ©   (2002-12-09 10:37) [4]

http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=delphi;action=display;num=1037272197


 
Юрий Зотов ©   (2002-12-09 12:19) [5]

> а куда иконка девается?

В трей, куда ж еще-то.
Двойной клик по иконке снова показывает форму. Сворачивается она снова в трей, а ее закрытие завершает программу.


 
Berg   (2002-12-09 12:25) [6]

>>Юрий Зотов © (09.12.02 12:19)

Дык, нет ее там, потому и переспрашиваю. Нет не в таскбаре, ни возле часов, нигде нет.


 
Юрий Зотов ©   (2002-12-09 12:55) [7]

Так быть не должно, этот код проверен уже десятки раз.

1. У Application вообще иконка имеется?
2. Если у Вас XP, раздвиньте трей (сняв сначала закрепление таскбара).


 
Юрий Зотов ©   (2002-12-09 13:07) [8]

Кажется, все ясно.
Обработчик OnCreate - назначили?


 
Berg   (2002-12-09 14:08) [9]

>>Юрий Зотов © (09.12.02 13:07)

Спасибо, разобрался!
Признаю, что с моей стороны это быол просто глупо - скопировать код и не переназначить обработчик.



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
4-61876
Димон
2002-11-06 20:21
2002.12.19
Remove Application from TaskBar


14-61788
Schummi
2002-11-27 08:04
2002.12.19
Такое Вам и не снилось!


4-61880
LEgO-2
2002-11-06 00:06
2002.12.19
Поиск числа в чужом процессе


1-61583
v-o-y-a-g-e-r
2002-12-09 13:42
2002.12.19
Возможно ли при создании потока(нити) передать в него функцию


1-61581
EugeneG
2002-12-10 08:32
2002.12.19
RichEdit scroll after find