Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.24;
Скачать: CL | DM;

Вниз

Иконка и сервис   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.013 c
2-1201681975
Andrej
2008-01-30 11:32
2008.02.24
TShellTreeView


2-1201861064
mrFreeman2007
2008-02-01 13:17
2008.02.24
Завершение работы


2-1201488326
vegarulez
2008-01-28 05:45
2008.02.24
Вопрос про клозет датасет


2-1201539338
leonidus
2008-01-28 19:55
2008.02.24
Проверка уникальности записи


2-1201684718
Lex-85
2008-01-30 12:18
2008.02.24
Ошибка в Maskedit