Есть ли способ вывести графический интерфейс приложения на текущий рабочий стол? - PullRequest
1 голос
/ 22 апреля 2010

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

Существует графический интерфейс для управления службой, который представляет собой отдельный исполняемый файл, но запускаемый процесс (фактически несколько его экземпляров) имеет собственный графический интерфейс, который необходимо показать. Его не нужно делать видимым самим сервисом, но, по крайней мере, его нужно сделать видимым для другого процесса с видимым графическим интерфейсом. Пользователь Windows, на котором запущена служба и который должен видеть графический интерфейс запущенного процесса, является тем же и известным во время установки.

Есть ли какой-нибудь способ сделать это или он вернулся к чертежной доске?

Также и служба, и приложение для запуска являются и нашим кодом, и изменяемыми.

1 Ответ

0 голосов
/ 24 апреля 2010

Моей первой мыслью было предложить вам взглянуть на функции WTS * и CreateProcessAsUser, а затем я перешел по предоставленной вами ссылке и увидел, что вы уже рассмотрели это и отклонили его.

В качестве альтернативы, если я вас правильно понял, у вас есть служба Windows и графический интерфейс пользователя, который используется для управления службой. Так почему бы не использовать имеющийся у вас канал связи между Сервисом и графическим интерфейсом управления для отправки сообщения от сервиса в графический интерфейс управления, а графический интерфейс управления должен запускать другие приложения с графическим интерфейсом от имени службы? Конечно, это предполагает, что графический интерфейс управления всегда работает.

Вы можете даже сделать это со скрытым приложением, которое не отображается и запускается при входе пользователя в систему. Таким образом, вы снижаете риск непреднамеренного закрытия приложения пользователем. Это будет приложение, отдельное от реального приложения управления. .

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