| Как поместить иконку в трей средствами Delphi? Здесь я привожу ответ на интересующий многих вопрос: а как же поместить иконку в трей? Надо сказать, что это довольно распространенный пример, и авторство его мне точно не известно, но помочь он Вам должен.
Обязательно включите в список подключаемых модулей, модуль ShellApi, иначе ничего работать не будет.
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.
Источник: http://delphid.dax.ru Дата публикации: 26.01.2006 Прочитано: 1440 раз
Дополнительно на данную тему
|