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

Вниз

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

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

Наверх





Память: 0.45 MB
Время: 0.094 c
4-1192513498
mx
2007-10-16 09:44
2008.07.06
Как отловить завершение работы Windows из под сервиса?


9-1171685659
__3d[Power]
2007-02-17 07:14
2008.07.06
TOTAL INFLUENCE: Мультиплеерный тактический комбат симулятор


15-1211516372
Knight
2008-05-23 08:19
2008.07.06
Есть ли свободные векторные карты с привязками?


3-1201386021
leonidus
2008-01-27 01:20
2008.07.06
Размещение изображения в таблице Access


2-1212701907
alex-drob
2008-06-06 01:38
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский