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

Вниз

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

 
Igor_thief   (2001-12-20 12:04) [0]

Народ, я видел у Вас есть неплохой исходник "по закидыванию проги в трей". Исходник то клёвый, но он кроме как бросания в трей ничего не делает. Как сделать реакцию на нажатие мыши. Чтобы появилась менюшка, итд. Буду рад если получу ответ на мыло.


 
Bizon   (2002-01-10 14:30) [1]

Могу скинуть библиотечку ProLib, где есть компонент System Tray, который имеет и меню и реагирует на клик, и на даблклик и др.


 
Юрий Зотов   (2002-01-10 14:33) [2]

http://www.delphikingdom.com/helloworld/samples_win.htm

Там скачайте пример N 1 (3.6K). В нем все и найдете.


 
_SnAke_   (2002-01-10 15:08) [3]

Посмотри на пятой странице кладовки компонент KreyMedia


 
Igor_thief   (2002-01-10 17:10) [4]

А как перехватить тот момент, когда форма минимизируется, чтобы забросить форму в трей?


 
Pat   (2002-01-10 18:16) [5]

>Igor_thief
Может тебе это надо:
N1 - Выход
N3 - Развернуть
N4 - Свернуть

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
shellApi, StdCtrls, AppEvnts, Menus;

type
TForm1 = class(TForm)
ApplicationEvents1: TApplicationEvents;
PopupM: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure IconMouse(var Msg : TMessage);message WM_USER + 1;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ApplicationEvents1Minimize(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.IconMouse(var Msg : TMessage);
var p:tpoint;
begin
getcursorpos(p);
case Msg.LParam of
WM_LBUTTONDBLCLK :
begin
ShowWindow(Application.Handle,SW_SHOW);
Application.Restore;
end;
WM_rbuttonup:
begin
SetForegroundWindow(Handle);
PopupM.Popup(P.X,P.Y);
PostMessage(Handle,WM_NULL,0,0)
end;
end;
end;

Procedure ic(a:boolean);
var nim:tnotifyicondata;
begin
with nim do
begin
cbSize:=sizeof(nim);
wnd:=form1.Handle;
uid:=1;
uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
hicon:=Application.Icon.Handle;
uCallbackMessage:= wm_user+1;
szTip:="Твою мать";
end;

if a then shell_notifyicon(nim_add,@nim) else
shell_notifyicon(nim_delete,@nim);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=canone;
application.Minimize;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ic(true);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
ic(false);
end;

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
showwindow(application.handle,0);
end;

procedure TForm1.N1Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
ShowWindow(Application.Handle,SW_SHOW);
Application.Restore;

end;

procedure TForm1.N4Click(Sender: TObject);
begin
application.Minimize;
end;

end.



 
Igor_thief   (2002-01-10 23:44) [6]

Огромнейшее спасибо Pat!!!!!!!!!!!!!!!!!!!!!! Я попробую твой вариант.


 
Fellomena   (2002-01-11 11:35) [7]

Народ - что вы все на компанентах помешались ?
Такие элементарные вещи как иконка в трэе, которая реагирует на клик и выдаёт хинт и PopUp меню
надо не лениться и делать на API !
Такими темпами уровень абстракции ООП вскоре станет черезчур высоким и тогда не станет программеров 8)
Если кому надо - вышлю пример иконки в трее с меню и хинтом - всё делала на чистом API (в SDK всё это есть)


 
Igor_thief   (2002-01-11 12:17) [8]

Буду очень рад ознакомиться с Вашим примером Fellomena.


 
Русский   (2002-01-11 12:39) [9]

To Fellomena>
В принципе лучше писать ето на чистом WinAPI, но если код очень большой, то потом фиг разберёшся, где что!


 
Bizon   (2002-01-11 12:47) [10]

>Fellomena
Конечно, если время позволяет, можно написать самому (если умеешь, если не умеешь, то хотя бы ради обучения), но ведь иногда надо быстро. Для этого есть готовые компоненты.


 
Igor_thief   (2002-01-11 12:55) [11]

>To all of people
Готовые компоненты лучше просто разирать и по ним учиться. Можно также написать свой компонент, для особой практики(чего я делать не умею).


 
Igor_thief   (2002-01-11 12:57) [12]

>To all of people
Готовые компоненты лучше просто разирать и по ним учиться. Можно также написать свой компонент, для особой практики(чего я делать не умею). Даже если сильно припекло, то всё равно будет полезнее разобраться, написать ручками и запомнить(естественно, что если сам слабо, то спроси у людей и выучи результат).


 
Red Alert   (2002-01-12 04:48) [13]

Блин... Я пример на API уже 5 раз кидал в форум...


 
Romul   (2002-01-13 09:53) [14]

Кстати я примером именно от Red Alert воспользовался, немножко переделал и все прекрасно работает.


 
Igor_thief   (2002-01-13 12:56) [15]

Нут так киньте мне этот супер пример на мыло please!!! Буду ну очень благодарен. Да, только не забывайте что мне нужен пример в котором прога помещается в трей именно после того как пользователь нажмёт кнопочку минимизации. Хотя у меня возникла и деЯ как это раскрутить немножко в другом варианте. Короче говоря - жду, а там уж посмотрим.


 
Fellomena   (2002-01-14 11:49) [16]

Если кому надо - в кладовке свой пример выложила (мыло глючит у меня).


 
Igor_thief   (2002-01-14 19:46) [17]

Щас проверим кладовочку.


 
Igor_thief   (2002-01-15 11:57) [18]

Короче говоря я наконецто во всём разобрался. Но возникла только одна проблемка. Apllication.Restore. Вот это внатуре проблемка. Ведь без этой вот проблемки нет способа вывести окно поверх осальных окон и сделать его активным. Надобно как-то выкрутиться.


 
HazMat   (2002-03-04 09:25) [19]

Попробуй
Application.BringToFront;



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

Форум: "WinAPI";
Текущий архив: 2002.05.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.005 c
4-17743
BorisMor
2002-03-02 02:11
2002.05.06
хэндл консоли


3-17493
Yuri Btr
2002-04-12 16:03
2002.05.06
Invalid field descriptor


14-17690
Sergo
2002-03-23 10:05
2002.05.06
Сеть


1-17531
Владимир2
2002-04-23 14:21
2002.05.06
Как определить текущий регистр клавиатуры: русский или английский


1-17561
Anar
2002-04-22 10:03
2002.05.06
SysTray





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