Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
ВнизПрограмму - в системный трей Найти похожие ветки
← →
Dr. Genius (2005-01-01 10:16) [0]Как можно поместить программу в системный трей без использования библиотеки rxLib? И как при этом можно самому задавать соответствующие пункты меню (и, соответственно, обработчики событий для них) при нажатии правой кнопкой мыши на иконке программы, висящей в трее?
← →
Palladin © (2005-01-01 10:28) [1]Все это и многое другое о иконке в трее ты найдешь в ЛЮБОМ поисковике, в ОГРОМНОМ объеме.
← →
YurikGL © (2005-01-01 10:39) [2]
> И как при этом можно самому задавать соответствующие пункты
> меню (и, соответственно, обработчики событий для них) при
> нажатии правой кнопкой мыши на иконке программы, висящей
> в трее?
Как-как... Вешать popup-меню и обрабатывать onclick :-) С Новым Годом!
← →
трей (2005-01-01 14:08) [3]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;
ff1: TMenuItem;
Timer1: TTimer;
Button4: TButton;
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);
procedure Timer1Timer(Sender: TObject);
procedure Button4Click(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;
g:Boolean;
b,i:Byte;
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
AddModDelIcon(Handle,2,1,LoadIcon(0,MakeIntResource(32513+i)),"Modify Icon");
i:= succ(i) mod 4;
end;
procedure TForm1.Button2Click(Sender: TObject);//Show Balloon
begin //1= INFO; 2= WARNING; 3= ERROR;
BalloonHint(1,b,"Balloon hint",FormatDateTime("Ñåãîäíÿ : dddd"^m"ddddd ã.",Now));
b:= succ(b) mod 4;
end;
procedure TForm1.Button3Click(Sender: TObject);//Hide Balloon
begin
BalloonHint(1,0,"","")
end;
procedure TForm1.Button4Click(Sender: TObject);//Delete end Add Icon
begin
beep;
g:= not g;
if g then AddModDelIcon(Handle,3,1,0,"")//Delete Icon
else AddModDelIcon(Handle,1,1,Application.Icon.Handle,"Add Icon 1")
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
AddModDelIcon(Handle,3,1,0,"")//Delete Icon
end;
var sX, sY: Integer;
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-5);
WM_LBUTTONUP : Button1.Click;
WM_MOUSEMOVE: begin
sX:= Mouse.CursorPos.x;
sY:= Mouse.CursorPos.y;
if Timer1.Enabled then exit;
Timer1.Enabled:=true;
Caption:="Mouse YES";
AddModDelIcon(Handle,2,1,LoadIcon(0,IDI_APPLICATION),"Mouse YES")
end;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (Mouse.CursorPos.x <> sX) or (Mouse.CursorPos.y <> sY) then begin
Caption:="Mouse NO";
Timer1.Enabled:=False;
AddModDelIcon(Handle,2,1,Application.Icon.Handle,"")
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.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c