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

Вниз

System Tray   Найти похожие ветки 

 
MaxxSoft ©   (2004-11-16 11:03) [0]

Как свернуть / восстановить приложение в System Tray?


 
zz 5 ©   (2004-11-16 11:10) [1]

Приложение не сворачивается в System Tray, туда добавляется иконка


 
MaxxSoft ©   (2004-11-16 11:24) [2]

Это я понимаю. Хорошо поставим вопрос так: как добавить иконку в Tray и ловить нажатие на нее?


 
Piter ©   (2004-11-16 11:25) [3]

Вопрос: Как поместить иконку приложения в System Tray?

Ответ: для работы с SysTray (область, где часики) в WinApi есть функция - Shell_NotifyIcon. С помощью нее можно добавлять свои иконки в SysTray, модифицировать их и удалять.

function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL; stdcall;

Ее заголовок, а также определение типов TNotifyIconData, PNotifyIconData находится в юните shellapi.pas, который надо подключить для использования данной функции:
code>uses
 ..., ShellAPI;

Пример вызова:
предполагается, что в программе где-то объявлена глобальная переменная NID: TNotifyIconData

procedure TForm1.Button1Click(Sender: TObject);
var
begin
 NID.uID :=0;
 NID.Wnd := Handle;
 NID.uCallbackMessage :=WM_USER;
 NID.hIcon := LoadIcon(HINSTANCE,"ICON1");
 NID.szTip := "Моя иконка";
 NID.uFlags :=NIF_ICON or NIF_MESSAGE or NIF_TIP;
 NID.cbSize :=sizeof(NID);
 Shell_NotifyIcon(NIM_ADD,@NID);
end;


Файл проекта с данным примером можно загрузить ЗДЕСЬ

Вы можете подробнее почитать по данномй теме ЗДЕСЬ (systray_ext.txt)

Отвечал: Piter


 
MaxxSoft ©   (2004-11-16 11:52) [4]

А можно ссылочки "ЗДЕСЬ" еще раз...


 
grom   (2004-11-16 20:18) [5]

unit Unit1;

interface

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

type
 TNotifyIconBalloon = record
  cbSize: DWORD;
  hWnd: HWND;
  uID: UINT;
  uFlags: UINT;
  uCallbackMessage: UINT;
  hIcon: HICON;
  szTip: array[0..127] of AnsiChar;
  dwState: DWORD;
  dwStateMask: DWORD;
  szInfo: array[0..255] of AnsiChar;
  uTimeout: UINT;
  szInfoTitle: array[0..63] of AnsiChar;
  dwInfoFlags: DWORD;
end;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   PopupMenu1: TPopupMenu;
   procedure FormCreate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure PopupMenu1Popup(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   procedure DefaultHandler(var M); override;
   procedure Ico(var M:TMessage); message WM_USER+222;
 end;

var
 Form1: TForm1;
 N:TNotifyIconBalloon;
 WM_TASKBARCREATED: Cardinal;
 b:Boolean;
implementation

{$R *.dfm}

procedure BalloonHint(NIco,Flag:byte;Title,Text:string);
begin
 N.cbSize:=SizeOf(TNotifyIconBalloon);
 N.uID:=NIco;
 N.uFlags:=$00000010;
 StrPLCopy(N.szInfo,Text,SizeOf(N.szInfo)-1);
 StrPLCopy(N.szInfoTitle,Title,SizeOf(N.szInfoTitle)-1);
 N.uTimeout:=5000;
 N.dwInfoFlags:=Flag;
 Shell_NotifyIcon(NIM_MODIFY,@N);
end;

procedure AddModDelIcon(H:HWND;R,NIco:byte;Icon:HICON;S:string);
begin
 N.cbSize:=SizeOf(TNotifyIconBalloon);
 N.hWnd:=H;
 N.uID:=NIco;
 N.uFlags:=NIF_MESSAGE or NIF_ICON or NIF_TIP;
 N.uCallbackMessage:=WM_USER+222;
 N.hIcon := Icon;
 StrPLCopy(N.szTip,S,SizeOf(N.szTip)-1);
 if R=1 then Shell_NotifyIcon(NIM_ADD,@N);
 if R=2 then Shell_NotifyIcon(NIM_MODIFY,@N);
 if R=3 then Shell_NotifyIcon(NIM_DELETE,@N);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
AddModDelIcon(Handle,1,1,Application.Icon.Handle,"Add Icon 1");
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
beep;
b:= not b;
if b then AddModDelIcon(Handle,2,1,Icon.Handle,"Modify Icon 1")
     else AddModDelIcon(Handle,2,1,Application.Icon.Handle,"Modify Icon 2")
end;

procedure TForm1.Button2Click(Sender: TObject);//Show Balloon
begin //1= INFO; 2= WARNING; 3= ERROR;
BalloonHint(1,1,"Balloon hint",FormatDateTime("Ñåãîäíÿ : dddd"^m"ddddd ã.",Now))
end;

procedure TForm1.Button3Click(Sender: TObject);//Hide Balloon
begin
BalloonHint(1,0,"","")
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
AddModDelIcon(Handle,3,1,0,"")//Delete Icon
end;

procedure TForm1.Ico(var M:TMessage);
begin
if M.WParam=1 then
case M.LParam of
WM_RBUTTONUP : PopupMenu1.Popup(Mouse.CursorPos.x,Mouse.CursorPos.y);
WM_LBUTTONUP : Button1.Click;
end;
end;

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
SetForegroundWindow(Handle)
end;

procedure TForm1.DefaultHandler(var M);
begin
if TMessage(M).Msg = WM_TASKBARCREATED then
AddModDelIcon(Handle,1,1,Application.Icon.Handle,"Add Icon 2");
inherited;
end;

initialization
WM_TASKBARCREATED := RegisterWindowMessage("TaskbarCreated");

end.


 
DrPass ©   (2004-11-16 22:45) [6]

Во многих форумах "как добавить иконку в трей" является оффтопиком. Потому что уже тошнит


 
Piter ©   (2004-11-17 00:35) [7]

и правильно. Нужно темы такие закрывать и посылать в FAQ (обращаюсь к модераторам)



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

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

Наверх




Память: 0.47 MB
Время: 0.035 c
14-1102765633
Alter_WondeRu
2004-12-11 14:47
2005.01.02
Интернет через GPRS... Перспективы...


3-1102404539
Lotus_Totus
2004-12-07 10:28
2005.01.02
Автоматически старт Interbase


14-1103121552
gn
2004-12-15 17:39
2005.01.02
Интересное интерьвю:-))


8-1095337131
loky
2004-09-16 16:18
2005.01.02
Глючит ли Имага?


14-1102792030
123
2004-12-11 22:07
2005.01.02
Контрольная сумма.





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