Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
ВнизКлик по трей-иконке Найти похожие ветки
← →
mrFreeman2007 (2008-02-01 09:36) [0]Здравствуйте!
Подскажите, плз, как обработать onClick для трей-иконки?
← →
Сергей М. © (2008-02-01 10:00) [1]Смотря как ты ее туда запуздырил)
← →
homm © (2008-02-01 10:24) [2]Слава богу, тебе это удаллось!
← →
@!!ex © (2008-02-01 10:46) [3]> [0] mrFreeman2007 (01.02.08 09:36)
Внимание вопрос, чему у вас равно это значение:
TNotifyIconData.uCallBAckMessage? при "запуздыривании" иконки?
← →
Anatoly Podgoretsky © (2008-02-01 11:07) [4]> mrFreeman2007 (01.02.2008 09:36:00) [0]
А оно там есть?
← →
Анна (2008-02-01 11:59) [5]unit shellUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Menus, ExtCtrls;
const
WM_MYICONNOTIFY = WM_USER + 123;
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
RestoreItem: TMenuItem;
N1: TMenuItem;
FileExitItem1: TMenuItem;
HideItem: TMenuItem;
Button1: TButton;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure RestoreItemClick(Sender: TObject);
procedure HideItemClick(Sender: TObject);
procedure FileExitItem1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
ShownOnce: Boolean;
kk:integer;
public
{ Public declarations }
procedure WMICON(var msg: TMessage); message WM_MYICONNOTIFY;
procedure WMSYSCOMMAND(var msg: TMessage);message WM_SYSCOMMAND;
procedure RestoreMainForm;
procedure HideMainForm;
procedure CreateTrayIcon(n:Integer);
procedure DeleteTrayIcon(n:Integer);
procedure ppp;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses ComObj, activex, ShellApi, shlobj, registry;
procedure TForm1.WMICON(var msg: TMessage);
var P : TPoint;
begin
case msg.LParam of
WM_LBUTTONDOWN:
begin
GetCursorPos(p);
SetForegroundWindow(Application.MainForm.Handle);
PopupMenu1.Popup(P.X, P.Y);
end;
WM_LBUTTONDBLCLK : RestoreItemClick(Self);
end;
end;
procedure TForm1.WMSYSCOMMAND(var msg: TMessage);
begin
inherited;
if (Msg.wParam=SC_MINIMIZE) then HideItemClick(Self);
end;
procedure TForm1.HideMainForm;
begin
Application.ShowMainForm := False;
ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Handle, SW_HIDE);
end;
procedure TForm1.RestoreMainForm;
var i,j : Integer;
begin
Application.ShowMainForm := True;
ShowWindow(Application.Handle, SW_RESTORE);
ShowWindow(Application.MainForm.Handle, SW_RESTORE);
if not ShownOnce then
begin
for I := 0 to Application.MainForm.ComponentCount -1 do
if Application.MainForm.Components[I] is TWinControl then
with Application.MainForm.Components[I] as TWinControl do
if Visible then
begin
ShowWindow(Handle, SW_SHOWDEFAULT);
for J := 0 to ComponentCount -1 do
if Components[J] is TWinControl then
ShowWindow((Components[J] as TWinControl).Handle, SW_SHOWDEFAULT);
end;
ShownOnce := True;
end;
end;
procedure TForm1.CreateTrayIcon(n:Integer);
var nidata : TNotifyIconData;
begin
with nidata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_MYICONNOTIFY;
// if kk<>55 then begin
hIcon := Application.Icon.Handle;
StrPCopy(szTip,Application.Title);
// end else
// begin
// Application.Icon.LoadFromFile("hippo.ico");
// hIcon := Application.Icon.Handle;
// hIcon:= Image1.Picture.Icon.Handle;
// end;
end;
Shell_NotifyIcon(NIM_ADD, @nidata);
ppp;
end;
procedure TForm1.DeleteTrayIcon(n:Integer);
var nidata : TNotifyIconData;
begin
with nidata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uID := 1;
end;
Shell_NotifyIcon(NIM_DELETE, @nidata);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// ShownOnce:= False;
// CreateTrayIcon(1);
// HideItem.Enabled := False;
//showmessage("Çàøëè â êðèàòå");
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteTrayIcon(1);
end;
procedure TForm1.RestoreItemClick(Sender: TObject);
begin
RestoreMainForm;
DeleteTrayIcon(1);
RestoreItem.Enabled := False;
HideItem.Enabled := True;
end;
procedure TForm1.HideItemClick(Sender: TObject);
begin
HideMainForm;
CreateTrayIcon(1);
HideItem.Enabled := False;
RestoreItem.Enabled := True;
end;
procedure TForm1.FileExitItem1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShownOnce:= False;
form1.Visible:= False;
CreateTrayIcon(1);
HideItem.Enabled := False;
kk:=55;
end;
procedure TForm1.ppp;
var nidata : TNotifyIconData;
ii,jj,kk:integer;
begin
with nidata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_MYICONNOTIFY;
hIcon:=Image1.Picture.Icon.Handle; //считывается иконка из ресурса
end;
//Shell_NotifyIcon(NIM_ADD, @nidata);
Shell_NotifyIcon(NIM_MODIFY, @nidata); // меняется на новую
end.
← →
mrFreeman2007 (2008-02-01 12:16) [6]Вау, вау, вау! Все равно что спросил дорогу в библиотеку, а меня взяли за руку и прямиком туда отвели. Спасибо!
← →
homm © (2008-02-01 12:23) [7]> [6] mrFreeman2007 (01.02.08 12:16)
Я бы сказал подвезли на машине с кондиционером :)
← →
Dennis I. Komarov © (2008-02-01 12:26) [8]Ну и чего толку? Назад-то дороги не знаешь :)
← →
ketmar © (2008-02-01 12:34) [9]ахренеть! какой страшный код. пойду, поплачу…
← →
mrfreeman2007 (2008-02-01 12:46) [10]Между прочим, я даже знаю, откуда этот код. Правда, сам не мог в нем разобраться. Щас разобрался.
← →
Сергей М. © (2008-02-01 14:41) [11]
> Щас разобрался
А я, мартышка, которая к старости слаба глазами стала, никак не увижу в [4] той самой тобой вожделенной фразы "onClick")
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c