Конференция "WinAPI" » в терминальной сессии - найти окно по классу [D7]
 
  • 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)

    нужно в каждой терм. сессии запустить свои процессы, они соберут нужную информацию и передут в основной экземпляр процесса.
 
Конференция "WinAPI" » в терминальной сессии - найти окно по классу [D7]
Есть новые Нет новых   [134434   +28][b:0][p:0]