![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перебор терминальных сессий [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? )