Служба Windows запускает приложение winforms - PullRequest
2 голосов
/ 24 ноября 2011

У меня есть эта проблема, я написал приложение WinForms, я использую его некоторое время без проблем. Затем я просто написал службу Windows для автоматического запуска / остановки моего приложения winforms. Но теперь окно не отображается, и в диспетчере задач оно работает. Кроме того, для тестирования моей службы сначала это было консольное приложение, поэтому Console.WriteLine () была полезна для отображения данных, состояния, переменных и т. Д., Как только она стала службой, консоли больше нет. Итак, я что-то пропустил?

Хорошо, мне нужен сервис, запускающий / останавливающий приложение winform. Это как мониторинг. Таким образом, если приложение winform не запущено, создает процесс и запускает его. Но если полночь, то приложение не должно запускаться, тогда служба находит процесс и закрывает его. Я не хочу превращать приложение winform в службу или службу в приложение winform.

Сначала я подумал только о том, чтобы поместить ярлык для моего приложения winforms в папку «автозагрузка», чтобы запустить его, но мне нужно закрыть его и / или перезапустить. Вот почему я написал сервис.

Спасибо!

1 Ответ

2 голосов
/ 24 ноября 2011

Начиная с Windows Vista, служба не может напрямую взаимодействовать с рабочим столом, а это означает, что она не может создавать видимую форму.

Даже если вы настроите ее для этого, лучше всего вамget - это приглашение в стиле UAC, указывающее пользователю, что ваша программа хотела бы отобразить.Это было результатом, когда мы попытались следовать этому: Как служба Windows может выполнить приложение с графическим интерфейсом?

У нас есть одно приложение Windows, которое абсолютно необходимо для взаимодействия с рабочим столом, оно было изначально написанов качестве службы Windows.Чтобы обойти ограничения, мы были вынуждены написать его как приложение WinForms со свойством Visible главной формы, установленным на «false».Когда нам нужно показать это, мы устанавливаем его в «true».Это хак, и мы знаем это, но мы никогда не могли найти лучшего решения.

Этот пост действительно предлагает альтернативы.Они не сработали для нас, но, возможно, у вас другая ситуация.http://msdn.microsoft.com/en-us/library/windows/desktop/ms683502(v=vs.85).aspx

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