Подсказка всплывающей подсказки с использованием службы Windows C#

Я хочу открыть всплывающую подсказку с помощью службы Windows. Я могу сделать это в Windows Forms. Можно ли использовать службу Windows?


person Sanjay Krishnan C B    schedule 31.08.2017    source источник
comment
stackoverflow.com/ вопросы/4237225/   -  person Blorgbeard    schedule 31.08.2017
comment
Возможный дубликат Разрешить службе взаимодействовать с рабочим столом в Windows   -  person jHilscher    schedule 31.08.2017
comment
В упомянутом посте объясняется, как взаимодействовать с окнами. Но как открыть всплывающую подсказку при взаимодействии с сервисом? Извините, я новичок в C#   -  person Sanjay Krishnan C B    schedule 31.08.2017


Ответы (2)


Я реализовал эту службу раньше и использовал именованный канал. В основном вы создаете два приложения.

  • Проекты службы Windows, которые действуют как сервер именованных каналов.
  • Приложение winforms со значком в трее, всплывающей подсказкой и клиентом Named Pipe.

Служба Windows отправляет сообщения подключенным клиентам, которые могут быть несколькими пользователями в системах, на которых запущено приложение winforms.

Приложение winforms прослушивает сообщения в канале. Как только сообщение придет, вы можете заставить воздушный шар всплыть.

Вот классный тестовый проект: https://www.codeproject.com/Tips/492231/Csharp-Async-Named-Pipes

Удачного кодирования!

person Bert Sinnema    schedule 31.08.2017
comment
Спасибо за ответ, но есть ли способ без параллельной работы другой программы? - person Sanjay Krishnan C B; 31.08.2017
comment
Нет, нет. Служба Windows не предназначена для пользовательского интерфейса. Большинство служб запускаются под учетной записью службы, а не под учетной записью пользователя, который запускает explorer.exe, поэтому пользовательский интерфейс рабочего стола. Почему для вас важно иметь это в одном проекте? - person Bert Sinnema; 31.08.2017
comment
Пытаясь сделать это как можно проще. Я попробую этот метод. Спасибо, что поделились этим постом! - person Sanjay Krishnan C B; 31.08.2017
comment
Я понимаю. В этом случае лучше их разделить. Удачи! - person Bert Sinnema; 31.08.2017

Не напрямую. Служба Windows не запускается в сеансе пользователя, она запускается в своем собственном специальном «Сеансе службы». Подсказки, которые отображаются в этом сеансе, не отображаются на рабочем столе пользователя.

Обычно способ обойти это - иметь вторую программу, которая запускается с логином пользователя и не отображается на панели задач. Эта программа использует некоторую форму IPC (например, WCF) для связи со службой, после чего служба может сообщить вспомогательной программе, чтобы она отображала уведомление по мере необходимости.

person Scott Chamberlain    schedule 31.08.2017
comment
Я понял, но есть ли способ без параллельной работы другой программы? - person Sanjay Krishnan C B; 31.08.2017
comment
Насколько мне известно, я не знаю ни одного. - person Scott Chamberlain; 31.08.2017
comment
Спасибо @ Скотт Чемберлен - person Sanjay Krishnan C B; 31.08.2017