-
Danger © (22.07.09 10:11) [0]Привет всем,
Вобщем, есть терминальный сервер, удаленные пользователи через терминал запускают определенную программу (уникальный класс окна, создаваемый программой, знаю). Нужно "пробежаться" по всем сессиям, и проверить наличие в них окна с определенным классом.
Вот здесь уже обсуждалось: http://pda.delphimaster.net/?id=1239955786&n=5 попробовал, как описано - нифига не работает. Непонятно, как получить Desktop терминальной сессии ( WTSEnumerateSessions() перечисляет лишь имена сессий, но не windows stations). Максимум, могу получить список процессов терминальной сессии - но по ним же я не могу получить список окон, созданных этими процессами?
Кто знает, посоветуйте, пожалста.. -
clickmaker © (23.07.09 18:17) [1]WTS_SESSION_INFO::pWinStationName
OpenWindowStation
EnumDesktops
EnumDesktopWindows -
Danger © (24.07.09 06:23) [2]Нет, так работать не будет.
Не верьте описанию WTS_SESSION_INFO::pWinStationName - оно возвращает имя сессии, но не window station терминальной сессии. -
brother © (24.07.09 09:39) [3]> WTS_SESSION_INFO::pWinStationName
она и должна отдавать имя сессии -
clickmaker © (24.07.09 11:37) [4]а что такое "имя сессии"? как оно выглядит?
-
Danger © (24.07.09 13:07) [5]
> brother © (24.07.09 09:39) [3]
> > WTS_SESSION_INFO::pWinStationName
> она и должна отдавать имя сессии
Да, но название сбивает с толку, и многие думают что это 'windows station'
> clickmaker © (24.07.09 11:37) [4]
> а что такое "имя сессии"? как оно выглядит?
Например, так: RDP-Tcp#5491 -
clickmaker © (24.07.09 14:03) [6]\Sessions\<SessionID>\Windows\WindowStations\WinSta0 ?
-
Danger © (24.07.09 14:33) [7]это имя windows station, или еще что-то? (путь в реестре?)
-
clickmaker © (24.07.09 15:37) [8]> это имя windows station
да -
Eraser © (24.07.09 18:42) [9]> [0] Danger © (22.07.09 10:11)
нужно в каждой терм. сессии запустить свои процессы, они соберут нужную информацию и передут в основной экземпляр процесса.