UI для обслуживания окон в точечной сети

Я создавал обслуживание окон в точечной сети, чтобы послать автоматическое электронное письмо моим друзьям. Все работает хорошо. Теперь у меня есть требование, любят показывать всплывающее окно, в котором говорится, что почта послала или что-то как этот. Но мне нужна некоторая идея осуществить ту логику. Я думаю, что не возможно иметь UI для обслуживания окон. ТАКИМ ОБРАЗОМ, я думал о создании другого приложения Windows, чтобы показать всплывающее сообщение и назвать это от обслуживания окон, когда почта послала. Это - только идея, и не уверенный этот правильный подход. Пожалуйста, ведите меня.

Спасибо.

2
добавлено отредактировано
Просмотры: 1

5 ответы

There is no restriction that windows service should not have any GUI. Windows services can have GUI. But if it has, it was shown up in Service 0. It was possible in earlier versions of Windows before Vista. Lets have a detailed discussion on it.
      A logon session is created whenever a user logs in to Windows. Each session has a Session ID. All the windows services will run in Session 0.
      In Session 0, a user can see and interact with the graphical elements of any program running there, including those created by Windows Services in earlier versions like Windows NT, 2000, XP and Server 2003.
       Later due to security concerns, Microsoft isolated the Session 0. And the impact is services cannot show their GUI. This is one of the case.
       Consider, A service attempts to create a user interface (UI), such as a dialog box, in Session 0. Because the user is not running in Session 0 due to the isolation of service 0, he or she never sees the UI and therefore cannot provide the input that the service is looking for. The service appears to stop functioning because it is waiting for a user response that does not occur.
      Due to this isolation, services cannot communicate with the applications through Windows message and vice versa. We use RPC, Interactive Services Detection Service (ISDS) and IPC for the communication between services and applications.

5
добавлено

Я думаю, что не возможно иметь UI для обслуживания окон.

Это частично правильный:

Услуги Microsoft Windows [..] не делайте шоу никакой пользовательский интерфейс.

См. ответ @Arun.

Таким образом, вам будет нужно обработать с GUI, который делает установление связи с пользователем. Чтобы позволить тем двум заявлениям (обслуживание и GUI) общаются, необходимо будет изучить межпроцессное взаимодействие (IPC).

Посмотрите этот вопрос для обзора механизмов IPC, применимых в C#, но обычно рекомендуемых, должен использовать WCF.

3
добавлено

Самый легкий путь IMO состоял бы в том, чтобы создать другое Приложение Windows, которое будет просто сидеть в подносе и ждать уведомления от обслуживания окон. Для коммуникации можно использовать WCF. У меня есть аналогичное решение, и оно работает очень хорошо.

Посмотрите этот пример межпроцессного взаимодействия:

http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication

2
добавлено

Посмотрите "Может служба Windows иметь GUI" в часто задаваемых вопросах Windows Services для обсуждения этой темы.

Технически Функция WTSSendMessage оставляет дверь открытой (даже на современных версиях окон), но вы будете очень более обеспеченным проектированием "безголового" сервисного приложения и доверием другому компоненту графического интерфейса пользователя, чтобы взаимодействовать с пользователем, как другие предположили.

1
добавлено

Возможно показать поп-коробку. Можно добавить GUI к услугам окон, добавив пространство имен Система. Windows. Формы . Перед тем щелчком правой кнопкой мыши на справочном счете, существующем в исследователе решения и, добавляют это пространство имен.

Теперь можно использовать любой контроль за gui в этом. Например:

MessageBox.Show("mailed succesfuly");
1
добавлено
Жаль провалить, но ваш ответ неправильное. Windows Vista и после Сессии использования 0 Изоляции - эффективно показывающий любой UI обслуживания в мертвом пространстве, которое могло привести к службе, становящейся безразличным. Пожалуйста, посмотрите msdn.microsoft.com/en-us/library/windows/hardware/… для большего количества информации,
добавлено автор shadowf, источник