Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
ВнизИконка и сервис Найти похожие ветки
← →
BBCHa (2008-01-28 15:22) [0]Всем привет!
Очень хочется, чтобы при запуске сервиса в трее появлялась иконка. Однако что- бы я не делал (использование компонентов иконок, использование API) не помогало. Иконка не выводится?
Подскажите, друзья, почему? Это кривизна рук, недостаток мозгов или есть какая-то фишка?
Заранее спасибо.
← →
homm © (2008-01-28 15:24) [1]> [0] BBCHa (28.01.08 15:22)
> Иконка не выводится?
> Это кривизна рук, недостаток мозгов или есть какая-то фишка?
Это развод? :)
Вообщето у сервисов есть галка «разрешить взаимодействие с рабочим столом»
← →
Palladin © (2008-01-28 15:27) [2]И вообщето взаимодействовать сервисам с рабочим столом не есть гуд.
← →
DVM © (2008-01-28 15:31) [3]
> BBCHa (28.01.08 15:22)
Иконку в область уведомлений должна помещать отдельная программка, которая запускается из автозагрузки и взаимодействует с сервисом.
Сам сервис никаких иконок туда помещать не должен.
← →
homm © (2008-01-28 15:33) [4]> [3] DVM © (28.01.08 15:31)
Знаю, что так чаще всего делается, но почему так?
← →
Palladin © (2008-01-28 15:35) [5]потому что сервис по сути своей ничего о рабочем столе знать не должен и вообще об какой либо интерактивности с пользователем... только при помощи специально написанных для него приложений...
← →
Сергей М. © (2008-01-28 15:38) [6]
> Очень хочется, чтобы при запуске сервиса в трее появлялась
> иконка
Очень хочется спросить, нафига сам сервис ? И если не нафига, то зачем ему иконка ?
← →
BBCHa (2008-01-28 15:39) [7]homm © (28.01.08 15:24) [1]
Спасибо большое... блин, все просто, вопрос отпал.
← →
BBCHa (2008-01-28 15:42) [8]Тогда, можно ли эту галку выставлять программно???
← →
BBCHa (2008-01-28 15:44) [9]
> Сергей М.
Есть некий сервис, работающий с Com-портом. необходимо, не останавливая сервис отключиться от порта, подключиться к нему, переключиться на другой ком.
← →
Сергей М. © (2008-01-28 15:45) [10]
> можно ли эту галку выставлять программно?
Можно, но самые большие грабли еще впереди - влупив эту галку в сервисе, "заточенном под ХР, ты не имеешь никакой гарантии работоспособности этой галки в иных версиях ОС.
← →
DVM © (2008-01-28 15:46) [11]
> homm © (28.01.08 15:33) [4]
[5] + потому что код помещения иконки самим сервисом будет совсем не прост. Ведь в систему может войти одновременно несколько пользователей - придется отслеживать этот момент, потом как то разруливать от иконки какого юзера пришел клик и т.д.
← →
Сергей М. © (2008-01-28 15:48) [12]
> Есть некий сервис, работающий с Com-портом
Ну есть он и есть.
Нафига ему иконка ?
> необходимо, не останавливая сервис отключиться от порта,
> подключиться к нему, переключиться на другой ком
Нафига сервису для этого иконка ?
Она нужна другому (обычному, т.е. не сервис) приложению для интерактивного взаимодействия с пользователем.
← →
BBCHa (2008-01-28 15:54) [13]
> Сергей М.
А что тогда сервису прикрутить для выполнения этих действий???
← →
DVM © (2008-01-28 15:56) [14]
> А что тогда сервису прикрутить для выполнения этих действий?
> ??
Интерфейс для взаимодействия с ним. Например через именованные каналы или сокеты.
← →
Palladin © (2008-01-28 15:56) [15]1. разработать протокол взаимодействия сервиса и управляющего приложения
2. написать поддержку на строне сервиса
3. написать приложение (которое и будет пихать иконку туда где часики)
← →
Сергей М. © (2008-01-28 16:07) [16]
> BBCHa (28.01.08 15:54) [13]
>
>
> что тогда сервису прикрутить для выполнения этих действий?
Ничего не надо "прикручивать".
Иконки нужны сервису как корове седло.
Иконки нужны приложению, непосредственно взаимодействующему с пользователем.
см. [15]
т.е. готовься разрабатывать как еще одно приложение.
Лучше всего если это "еще одно" будет приложением-апплетом панели управления. Делфи, кстати, предлагает для этой цели готовый визард, создающий заготовку такого приложения.
← →
DVM © (2008-01-28 16:09) [17]
> Лучше всего если это "еще одно" будет приложением-апплетом
> панели управления.
Еще лучше апплет отдельно, а индикатор состояния в трее - отдельно.
← →
Сергей М. © (2008-01-28 16:11) [18]
> DVM © (28.01.08 16:09) [17]
У уж это, imho, лишнее.
CPL вполне может совмещать и запуздыривание, и обмен с юзером, и обмен с сервисом.
← →
Anatoly Podgoretsky © (2008-01-28 17:00) [19]> BBCHa (28.01.2008 15:42:08) [8]
Нельзя это пользовательская привилегия.
← →
Семеныч (2008-01-28 17:06) [20]Когда делал такую задачу, исходил вот из чего.
1. Сервис. Самая ответственная часть всего комплекса, поэтому должен быть как можно более простым (поскольку давно известно: чем проще - тем надежнее). Пашет постоянно, поэтому должен жрать минимум ресурсов - значит, пишем сервис на чистом API. Никаких TServiceApplication, никаких иконок и никаких рабочих столов.
2. CPL. Запускается редко и ненадолго, поэтому размер неважен. Важнее скорость разработки - поэтому лепим CPL в стиле RAD ("палитра-мышка-форма"). При нажатии OK должна изменить настройки сервиса в реестре и перезапустить сам сервис. Если проставлена птичка "показывать иконку", то прописать SysTray"ную программу в автозапуск, если нет - убрать ее из автозапуска.
3. Иконка в SysTray. Тоже пашет постоянно, поэтому тоже должна жрать минимум ресурсов - значит, тоже пишем чистом API. Задача - при двойном клике вывести меню с двумя пунктами - запуск CPL и выход. Больше ничего, не надо, все остальное сделает CPL.
← →
Slym © (2008-01-29 04:24) [21]DVM © (28.01.08 15:56) [14]
Например через именованные каналы или сокеты
я бы предпочел COM
← →
Skyle © (2008-01-29 06:21) [22]А в висте, говорят, сервисам вообще запрещено на рабочий стол ходить...
← →
Dennis I. Komarov © (2008-01-29 09:40) [23]> [22] Skyle © (29.01.08 06:21)
И нечего им там делать
← →
Skyle © (2008-01-29 10:21) [24]
> Dennis I. Komarov © (29.01.08 09:40) [23]
> > [22] Skyle © (29.01.08 06:21)
>
> И нечего им там делать
А я и не спорил. Я только сказал, что мегасервис автора ветки с иконкой будет работать в висте совсем не так, как автор этого ожидает :)
← →
mrFreeman2007 (2008-01-30 12:52) [25]
> Очень хочется, чтобы при запуске сервиса в трее появлялась
> иконка.
Короче, смотри:
uses shlobj, shellapi;
const
wm_mytraynotify = wm_user+123;
procedure TrayIconCreate;
var
nidata:tnotifyicondata;
begin
with nidata do begin
cbsize:=sizeof(TNotifyicondata);
wnd:=self.Handle;
uid:=3;
uflags:=nif_icon or nif_message or nif_tip;
ucallbackmessage:=wm_mytraynotify;
hicon:=application.Icon.Handle;
sztip:="Моя Трей-иконка";
end;
shell_notifyicon(nim_add,@nidata);
end;
procedure TryIconDelete;
var
nidata:tnotifyicondata;
begin
with nidata do begin
cbsize:=sizeof(tnotifyicondata);
wnd:=self.Handle;
uid:=3;
end;
shell_notifyicon(nim_delete,@nidata);
end;
Дальше думай сам.
← →
ketmar © (2008-01-30 12:55) [26]обалдеть. пришёл и решил все проблемы одним махом. ветку, конечно, почитать не удосужился…
← →
Palladin © (2008-01-30 12:55) [27]Уау. Преклоняюсь пред тобой! О, Великий!
← →
mrFreeman2007 (2008-01-30 12:57) [28]А что?! Он спросил, я ответил.
← →
ketmar © (2008-01-30 13:02) [29]>[28] mrFreeman2007(30.01.08 12:57)
а то, что ты сначала ветку почитал бы, а потом писал. чтобы не конфузиться при всём народе. да хотя бы полностью [0] почитал, ага.
← →
Dennis I. Komarov © (2008-01-30 13:05) [30]Особено нравится:
> Короче, смотри:
аля, не слушай ты этих придурков :(
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.051 c