Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.52 MB
Время: 0.035 c
2-1201788603
Бо
2008-01-31 17:10
2008.02.24
Подскажите


2-1201868796
Danco
2008-02-01 15:26
2008.02.24
форма


15-1201259906
Lip
2008-01-25 14:18
2008.02.24
форум умер потому что delphi умерла?


4-1183713037
Dib@zol
2007-07-06 13:10
2008.02.24
TrackBar+API


2-1201847794
mrFreeman2007
2008-02-01 09:36
2008.02.24
Клик по трей-иконке





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