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

Вниз

Как изменять значок программы в трэи по необходимости?!   Найти похожие ветки 

 
Volf_555 ©   (2006-04-16 04:24) [0]

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

unit Unit1;

interface

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

 const UWM_TRAYICON = WM_USER+1;
 const ID_TRAYICON = 1;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   PopupMenu1: TPopupMenu;
   N11: TMenuItem;
   N21: TMenuItem;
   N31: TMenuItem;
   Timer1: TTimer;
   procedure Button2Click(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure N11Click(Sender: TObject);
   procedure N21Click(Sender: TObject);
   procedure N31Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
 private
   { Private declarations }
   procedure TrayDefaultHandler (var Message:TMessage);
 public
   { Public declarations }
   Data:TNotifyIconData;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
var
H:THandle;
S:Integer;
begin
H:=AllocateHWnd (Self.TrayDefaultHandler);
FillChar (S,SizeOf (S),#0);
data.cbSize:=SizeOf (S);
data.Wnd:=H;
data.uCallbackMessage:=UWM_TRAYICON;
data.uFlags:=NIF_ICON or NIF_TIP or NIF_MESSAGE;
data.hIcon:=Application.Icon.Handle;
StrPCopy (data.szTip,Application.Title);
Shell_NotifyIcon (NIM_ADD,@data);
form1.Hide;
end;

procedure TForm1.TrayDefaultHandler (var Message:TMessage);
begin
if Message.Msg=uWM_TRAYICON then
if Message.LParam=WM_RBUTTONDOWN then
begin
PopupMenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon (NIM_DELETE,@data);
end;

procedure TForm1.N11Click(Sender: TObject);
begin
Close
end;

procedure TForm1.N21Click(Sender: TObject);
begin
Form1.Show
end;

procedure TForm1.N31Click(Sender: TObject);
begin
Form1.Hide
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
H:THandle;
S:Integer;
begin
Shell_NotifyIcon (NIM_Delete,@data);
form1.Tag:=Form1.Tag+1;
case form1.Tag of
 1: begin
     Application.Icon.LoadFromFile("1.ico");
     Shell_NotifyIcon (NIM_Add,@data);
    end;
 2: begin
     Application.Icon.LoadFromFile("2.ico");
     Shell_NotifyIcon (NIM_Add,@data);
    end;
 3: begin
     Application.Icon.LoadFromFile("3.ico");
     Shell_NotifyIcon (NIM_Add,@data);
     form1.Tag:=0;
    end;
end;
end;

end.


 
TUser ©   (2006-04-16 05:46) [1]

ShellNotifyIcon


 
Volf_555 ©   (2006-04-16 12:54) [2]


> TUser ©   (16.04.06 05:46) [1]
> ShellNotifyIcon

Я ж ведь так и делал!
Вот кусок кода:

procedure TForm1.Timer1Timer(Sender: TObject);
var
H:THandle;
S:Integer;
begin
Shell_NotifyIcon (NIM_Delete,@data);
form1.Tag:=Form1.Tag+1;
case form1.Tag of
1: begin
    Application.Icon.LoadFromFile("1.ico");
    Shell_NotifyIcon (NIM_Add,@data);
   end;
2: begin
    Application.Icon.LoadFromFile("2.ico");
    Shell_NotifyIcon (NIM_Add,@data);
   end;
3: begin
    Application.Icon.LoadFromFile("3.ico");
    Shell_NotifyIcon (NIM_Add,@data);
    form1.Tag:=0;
   end;
end;
end;

По таймеру идёт загрузка иконки, а потом с помощью Shell_NotifyIcon(NIM_Delete,@data) - должна удалиться иконка, а с помощью Shell_NotifyIcon (NIM_Add,@data) - добавиться новая иконка.
Но это не работает по неизвестной причине...
Какие ещё будут варианты?


 
Leonid Troyanovsky ©   (2006-04-16 13:34) [3]


> Volf_555 ©   (16.04.06 12:54) [2]

>     Application.Icon.LoadFromFile("1.ico");
>     Shell_NotifyIcon (NIM_Add,@data);


Ну, у приложения ты поменял иконку, а где изменения data?

Сравни с http://rsdn.ru/Forum/?mid=897503

--
Regards, LVT.


 
Volf_555 ©   (2006-04-16 13:46) [4]

Всё - догнал и переделал :)
Всем большое спасибо!!!!


 
Юрий Зотов ©   (2006-04-16 21:10) [5]

И не надо сначала удалять, а потом добавлять иконку - используйте NIM_MODIFY.



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

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

Наверх




Память: 0.48 MB
Время: 0.043 c
2-1152877539
solenko
2006-07-14 15:45
2006.08.06
Помогоите с запросом


3-1148964388
apl
2006-05-30 08:46
2006.08.06
Как удалить записи


2-1153301090
MixAnOL
2006-07-19 13:24
2006.08.06
Поиск с FindFirst и FindNext


3-1148968666
Still Swamp
2006-05-30 09:57
2006.08.06
Как до FireBird добраться через ADO?


2-1153056298
UMU
2006-07-16 17:24
2006.08.06
Как уменьшить размер рисунка