![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с TryIcon! [D5, Win95/98, WinME, WinXP]
[BAD]Angel © (2002-05-23 16:09:00)Уважаемые мастера!
У меня вопрос: можно ли не создавая формывывести иконку моей программы в SystemTray?
Пример: При запуске программы в SysTray"е появляется иконка, а дальше по ней кнопкой мыши тыкаешь и PopupMenu выскакивает! По сути, мне форма не нужна...
Если можно, подскажите, как это осуществить! Желательно поподробнее!
Заранее спасибо!
[BAD]Angel (2002-05-30 14:44:00) [1]Song © - А КАК ДОБАВИТЬ значок в dpr??????
Толик (2002-05-24 10:50:00) [2]to [BAD]Angel ©:
Иконка в tray добавляется через Shell_NotifyIcon. Первый параметр - то, что надо сделать с этой иконкой (см. help, там всё понятно), второй параметр типа NOTIFYICONDATA. В эту структуру в качестве окна, которое должно получать сообщения от иконки передать Application.Handle.
Если не хочется изобретать велосипед, можно посмотреть в библиотеке RxLib есть компонент TRxTrayIcon. Можно посмотреть как он реализован и использовать его, правда, поскольку форма не нужна, то его придётся создавать динамически в файле проекта(надеюсь, с этим проблем не возникнет? :)) Поскольку в приложении форм быть не должно, то для запуска приложения использовать Application.Run не получится. Придётся в файле проекта написать руками
AddExitProc(DoneApplication);
repeat
Application.HandleMessage
until Application.Terminated;
На самом деле этот цикл не что иное как ф-я Application.Run(), но без упоминания о формах (см. исходники TApplication). Ну и не забыть после этого цикла удалить созданный руками компонент.
Вот собственно и всё...
Song (2002-05-23 17:56:00) [3]Ну не создавай тогда формы, добавляй значок в dpr"e... Какие проблемы-то?
neodiX (2002-05-23 17:53:00) [4]Используй TService
[BAD]Angel (2002-05-23 17:31:00) [5][Толик ©]
А как тогда выйти из положения?
Толик (2002-05-23 17:26:00) [6]У Application"а всегда есть скрытое окно, оно и может ловить всякие сообщения, в т.ч. и от иконки в трее.
for all
Народ, если пишут, что форма не нужна, зачем советовать Form1.Visible := FALSE????? Её вообще НЕ НАДО СОЗДАВАТЬ!!!
[BAD]Angel (2002-05-23 17:14:00) [7]Я слышал, что иконку можно создавать в самом DPR файле, без формы и других VCL компонент! Такое возможно?
Sasha9 (2002-05-23 16:30:00) [8]упс ....... неуспел
Sasha9 (2002-05-23 16:29:00) [9]хотябы одно окно у тебя должно быть чтобы реагировать на сообщения от иконки, поэтому просто поставь форме
visible:=falseи в dpr файле передApplication.CreateFormпоставьApplication.ShowMainForm:=false
[BAD]Angel (2002-05-23 16:26:00) [10]Спасибо, попробую...
Song (2002-05-23 16:26:00) [11]>> А конкретно, можно привести код программы без формы, чтобы в трее иконка висела?
Чтобы убрать программу- Application.ShowMainForm:=False;
Добавить значок: TShellNotifyIcon, NIM_ADD
Fredericco (2002-05-23 16:23:00) [12]Есть такая компонента TTrayIcon. Поищи в кладовке или в новостях VCL. Там можно и иконку в трей добавить и PopupMenu к ней привязать. А что бы форму скрыть перед
Application.CreateForm(TForm1, Form1);пропишиApplicaton.ShowMainForm:=False;
[BAD]Angel (2002-05-23 16:20:00) [13][Anatoly Podgoretsky (c)]
А конкретно, можно привести код программы без формы, чтобы в трее иконка висела?
Song (2002-05-23 16:17:00) [14]http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=delphi;action=display;num=1020241631
Anatoly Podgoretsky (2002-05-23 16:14:00) [15]Кто на новенького?
Пиши программу юез формы, раз тебе она не нужна, но тогда зачем нужна иконка?