Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перебор терминальных сессий [D7]


sniknik ©   (2007-05-25 23:47:00) 

Или както по другому... Смысл, мне надо из сервиса посылать сообщения (типа WM_COPYDATA, и др. пользовательские) клиенту (просто программе).
И сервис и клиенты (копии программы) работают только на сервере, к которому народ подключается через "подключение к удаленному рабочему столу", естественно программа запускается в различных терминалах, а сообщение от сервиса приходит только к той которая запущена в консольной сессии (mstsc.exe /CONSOLE).
Что бы такого придумать, чтобы посылать всем запущенным программам? По идее надо перебрать все сессии и в каждой найти "свою" программу, и если найдена продублировать, послать копию сообщения. Но вот как это сделать? Т.к. область для меня новая... в общем есть функции какие то? (перечисление терминалов? типа как есть перечисление десктопов/окон, или нужно как то управлять сервером терминалов (есть API)? С чего начать в общем.

Да, еще. "Обходные" пути, типа переделать передачу на, по сокетам, пайпам и т.д. не предлагать. ;) Думал уже, не получится, программу переделать не могу, не моя (и контора отказывается менять), как есть у нее набор сообщений принимаемых прямо окном, так и останется (в крайнем случае инфа будет только в консоли...), а вот сервис мой, могу менять как заблагорассудится.


sniknik   (2007-05-25 23:59:00) [1]

Вот оно! WTS... спасибо, действительно есть
WTSSendMessage -> перебор сессий WTSEnumerateSessions -> процессы в сессиях WTSEnumerateProcesses... и т.д.
Теперь найду.


Eraser   (2007-05-25 23:56:00) [2]

ну если серьезно, то думаю с пом. WTSEnumerateSessions перебрать все сессии, и пробовать в каждой искать "свой" процесс-клиент, которому через IPC давать команду "отослать сообщение WM_COPYDATA".


Eraser   (2007-05-25 23:52:00) [3]

WTSSendMessage? )


Наверх

Титульная страница Поиск, карта сайта Написать письмо