:: FindWindow не работает из приложения-службы - PullRequest
4 голосов
/ 04 декабря 2008

Windows API :: Функция FindWindow завершается ошибкой при вызове из приложения-службы. GetLastError () также возвращает 0 (успех?). Это проблема привилегий \ прав доступа? Как вы думаете, это проблема дизайна, и я должен использовать другой метод IPC?

Ответы [ 2 ]

6 голосов
/ 04 декабря 2008

Леппи прав, службы Windows обычно отказываются во взаимодействии с рабочим столом. Вы можете обойти это в XP и более ранних версиях, но не сможете сделать это в Vista и выше. Вам лучше делегировать взаимодействие рабочего стола и пользователя с приложением с графическим интерфейсом. Подробнее см. Этот документ .

5 голосов
/ 17 июня 2009

Службы запускаются в сеансе 0. В XP и более ранних версиях первый пользователь, выполняющий вход, также запускается в сеансе 0, а последующие пользователи запускаются в сеансах 1 и выше. Если для службы установлено значение «Взаимодействовать с рабочим столом», то она может получить доступ к любым пользовательским окнам, запущенным в сеансе 0. Однако, начиная с Vista, пользователи больше никогда не запускаются в сеансе 0. FindWindow () работает только в контексте сеанса, в который он вызывается, поскольку окна не могут быть доступны через границы сеанса.

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