Я разрабатываю приложение для наблюдения за другими приложениями (включая приложения из других пользовательских сеансов). Мое приложение должно собирать информацию о загрузке ЦП, использовании памяти и состоянии главного окна (если существует) каждого приложения. Теперь я пытаюсь получить состояние окна другого приложения. Если его окно находится в том же сеансе (что и мое приложение), тогда все в порядке.
И ... У меня проблема с получением информации об окнах в другом сеансе. Я прочитал эту старую тему: Как могу ли я перечислить открытые окна (~ EnumWindows) другого пользовательского сеанса, и я понял, что должен запускать новый процесс в каждом сеансе, чтобы перечислить окна на рабочем столе этого сеанса.
Но, может быть, в Windows Server 2012 появилось новое решение (я) для этой проблемы (некоторые новые функции API или какое-то взаимодействие с dwm.exe в другом сеансе и т. Д.)? Если требуются некоторые административные разрешения (и / или групповые политики), это не проблема
Спасибо
PS. Теперь я использую свойство Process.MainWindowHandle (которое, вероятно, использует функцию GetWindowThreadProcessId). Также я пробовал использовать OpenWindowStation ("\ Sessions \ 1 \ Windows \ WindowStations \ WinSta0"), который возвращает ошибку 161 (неверный путь)