Как получить активное окно авторизованного пользователя из сервиса - PullRequest
2 голосов
/ 11 марта 2009

Я пишу сервис на C #, который должен получать информацию от текущего пользователя, например, активного окна или последнего движения мыши. Я уже узнал, что могу получить эту информацию с помощью user32.dll, но это работает только из пользовательского контекста, который вызывает методы.

Таким образом, мой сервис может получать только информацию о себе, но не о «реальном мире» пользователя. Я также слышал, что это возможно, используя WTSEnumerateSessions, OpenWindowStation, EnumDesktops и т. Д., Но я не нашел пример, показывающий, как это сделать.

Кто-нибудь знает (или, может быть, несколько примеров кода), как достичь моей цели?

1 Ответ

4 голосов
/ 11 марта 2009

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

Обратите внимание, что в последних версиях Windows сеанс консоли (сеанс 0) ограничен административными целями, и пользователь (обычно) не будет там. У вас может быть ноль, один или несколько не консольных сеансов.

...