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

Вниз

Сменить вид иконки в трее   Найти похожие ветки 

 
Vyacheslav   (2008-06-09 15:04) [0]

Есть приложение с скрытой формой и иконкой в трее. RX библиотеки нет возможности подключить, да как и впрочем любые другие. Каким образом можно сменить или саму иконку (использую икону приложения) на другую, каким либо способом или сделать текущую иконку в оттенках серого (вроде как неактивной)?
Вот код, которым пользуюсь для отображения иконки в трее:

unit Unit1;

interface

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

const
WM_NOTIFYTRAYICON = WM_USER + 1;

type
TForm1 = class(TForm)
procedure FormDestroy(Sender: TObject);

procedure FormCreate(Sender: TObject);
private
{ Private declarations }

procedure WMTRAYICONNOTIFY(var Msg: TMessage);
message WM_NOTIFYTRAYICON;

public
{ Public declarations }
end;

var
Form1: TForm1;
tray: TNotifyIconData;
TrayIcon: TIcon;

implementation

{$R *.dfm}

procedure TForm1.WMTRAYICONNOTIFY(var Msg: TMessage);
begin
{обрабатываем события на иконке в трее}
case Msg.LParam of
WM_LBUTTONDOWN: Form1.Visible:=true;
WM_LBUTTONDBLCLK: {код обработки события двойного нажатия на левую кнопку мыши}
WM_LBUTTONUP: {код обработки события отпускания левой кнопки мыши}

WM_RBUTTONDOWN: {код}
WM_RBUTTONDBLCLK: {код}
WM_RBUTTONUP: {код}

WM_MOUSEMOVE: {код}
end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
try
with tray do begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Form1.Handle;
uID := 1;
end;
Shell_NotifyIcon(NIM_DELETE, Addr(tray));
finally
Application.Terminate;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
TrayIcon := Application.Icon;
with tray do begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Form1.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_NOTIFYTRAYICON;
hIcon := TrayIcon.Handle;
szTip := ("Это мое приложение в трее");
end;
Shell_NotifyIcon(NIM_ADD, Addr(tray));
end;

procedure TForm1.GoToTrayButtonClick(Sender: TObject);
begin
//сворачиваемся в Трей
Form1.Visible:=false;
end;

end.


 
SergeyIT ©   (2008-06-09 15:34) [1]

Вот по таймеру переношу данные на сервер и меняю иконку

procedure TMainCopy.TimerTimer(Sender: TObject);
var
 i: Integer;
begin
 inTimer := TRUE;
 i := CopyNext;
 if i <> iState then
 begin
   ModifyTrayIcon(i);
 end;
 inTimer := FALSE;
end;

procedure TMainCopy.ModifyTrayIcon(ind: Integer);
var
  nidata : TNotifyIconData;
  s: String;
begin
 with nidata do
 begin
   cbSize := SizeOf(TNotifyIconData);
   Wnd := Self.Handle; //HWND вашего окна (окна принимающего обратные сообщения)
   uID := 1;          // номер значка
   uCallBackMessage := WM_COPYICONNOTIFY;
   hIcon := Icons[ind].Handle;   // то откуда сдергивается значек
                                    // это может быть и ImageList и т.д.
   case ind of
   0: s := "Nothing to copy";
   1: s := "Running";
   else s := LastError;
   end;
   StrPCopy(szTip, s);  // всплывающая строка,
   uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; //обрабатываемые флаги
   Shell_NotifyIcon(NIM_MODIFY, @nidata);    // добавление значка
   iState := ind;
 end;
end;

где
   Icons: Array[0..2] of TIcon;
   iState: Integer;


 
Юрий Зотов ©   (2008-06-09 16:29) [2]

> Vyacheslav   (09.06.08 15:04)  

NIM_MODIFY - обновление иконки.



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

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

Наверх




Память: 0.45 MB
Время: 0.032 c
15-1211534621
Slider007
2008-05-23 13:23
2008.07.06
С днем рождения ! 23 мая 2008 пятница


2-1212653898
Kaer
2008-06-05 12:18
2008.07.06
Не работает Int64


15-1211360284
Knight
2008-05-21 12:58
2008.07.06
Программа для MS SQL..


2-1212723801
DimonS
2008-06-06 07:43
2008.07.06
Странное поведение выборки в Access


2-1212697784
DmT
2008-06-06 00:29
2008.07.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский