Как запустить значок уведомления - PullRequest
1 голос
/ 08 октября 2010

Привет, у меня есть приложение службы Windows, работающее на локальных компьютерах пользователей.У меня также есть приложение для обновления приложений, которое вызывается службой для проверки наличия последних обновлений.Если есть, то я бы хотел вывести на панель задач уведомление, чтобы уведомить пользователя о наличии обновлений.Пользователь может щелкнуть значок уведомления и запустить процесс обновления, который остановит службу, установит обновления и перезапустит приложение.

У меня вопрос, как я могу заставить значок уведомления появляться на рабочем столе.Я пытался заставить программу обновления выдвинуть значок, но поскольку служба Windows запускает программу обновления, программа обновления запускается под именем пользователя «Система» и, следовательно, не может открывать пользовательский интерфейс.Кто-нибудь может предложить решение, пожалуйста

1 Ответ

1 голос
/ 08 октября 2010

Вы не упоминаете, какой язык используете для разработки своего приложения, поэтому ответ может немного отличаться. По сути, службы Windows не могут напрямую взаимодействовать с вошедшим пользователем, так как они работают на другой WindowStation. На этой странице в MSDN описаны некоторые распространенные приемы взаимодействия с пользовательским интерфейсом службы Windows; большинство из них связаны с вызовом неуправляемого кода.

В частности, я предлагаю вам позвонить CreateProcessAsUser из вашей службы, чтобы запустить отдельное приложение, которое запускается в контексте пользователя и отображает значок в области уведомлений. Если ваше приложение пользовательского интерфейса должно обмениваться информацией с работающей службой, вам необходимо реализовать какой-либо IPC, например именованные каналы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...