|
Модераторы: Poseidon, Snowy, bems, MetalFan |
|
tarakan |
|
||||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 11.11.2008 Репутация: нет Всего: нет |
Здравствуйте.
Задался вопросом как сделать иконку в трее для СЛУЖБЫ. Прошу отказаться от высказываний типа : «Это неблагодарное дело, службы не работают с рабочим столом». Есть код
Общеизвестная проблема в том, что служба запускается от другого пользователя (В случае Windows 7 – это пользователь : «СИСТЕМА») и не знает на каком Desktop рисовать иконку. Есть функция
План такой : По запуску службы запустить функцию поиска активного десктопа и на нем нарисовать иконку. Не могу в коде это все соединить в одно целое. Нужна помощь знатоков. |
||||
|
|||||
ZBugz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 631 Регистрация: 15.2.2006 Где: Москва Репутация: 6 Всего: 6 |
Я тут решил мысль подкинуть....
Я ни разу не делал такое и вот подумал вспомнив одну программу: а почему не делать иконки на всех рабочих столах ? |
|||
|
||||
tarakan |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 11.11.2008 Репутация: нет Всего: нет |
Да, в будущем дойдем и до этого, но для начала нужно освоить задачу минимум.
|
|||
|
||||
Hiori |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 51 Регистрация: 29.3.2016 Репутация: нет Всего: нет |
а можно спросить зачем? я так понимаю, что иконка нужна для отображения активности/простоя/прогресса действий и т.п.? почему не пойти по общепринятому пути и не написать попутно сервису некий монитор, который и будет содержать в себе исключительно обработку трея и некую визуализацию работы сервиса?
перефразирую свой вопрос - чем вас конкретно не устраивает подобный "монитор" Это сообщение отредактировал(а) Hiori - 10.12.2018, 07:33 |
|||
|
||||
neweraser |
|
|||
Опытный Профиль Группа: Участник Сообщений: 598 Регистрация: 17.2.2008 Репутация: нет Всего: 6 |
Hiori, совершенно верно. Идея рисовать иконку на всех рабочих столах как-то не очень звучит, а вот с монитором сам писал службы. Автору советую взглянуть в сторону pipes, не помню подробностей, но таким способом служба взаимодействовала с программой мониторинга.
-------------------- Кто ищет, тот всегда найдет. |
|||
|
||||
kami |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
и это две большие разницы. Чтобы создать иконку в трее требуется вызов функции ShellNotifyIcon А у нее отсутствует возможность указать оконную станцию и десктоп, с системным треем которых нужно работать. То есть - эта функция ассоциирована именно с десктопом того потока, который ее вызывает. Если сумеете создать поток и переключить его на активный десктоп пользователя - сработает. Но увы - среди функций, ответственных за оконные станции и десктопы, нет необходимых. Т.е. теоретически надо бы начать с SetProcessWindowStation, потом SetThreadDesktop (промежуточные вызовы API упустим), но уже с самого начала сталкиваемся с проблемой: This window station must be associated with the current session. Что для сервиса, мягко говоря, совсем не так... P.S. Это достаточно развернутый ответ. Вкратце он звучит именно так, как указано в первом сообщении: «Это неблагодарное дело, службы не работают с рабочим столом» Это сообщение отредактировал(а) kami - 12.3.2019, 21:57 |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Это невозможно. Делай отдельную приложуху которая будет висеть в трее и общаться с сервисом. |
|||
|
||||
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |