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

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.017 c
3-1148995910
Romul
2006-05-30 17:31
2006.08.06
Работа с полем BLOB, очень жду


2-1153104346
koha
2006-07-17 06:45
2006.08.06
Как программно узнать версию собственной программы


1-1151033700
ORMADA
2006-06-23 07:35
2006.08.06
спец папки windows


2-1152793626
alsov
2006-07-13 16:27
2006.08.06
set в свойстве object TStringList а


3-1148752070
Гарик
2006-05-27 21:47
2006.08.06
Динамическое создание БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский