Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Гм, а чем MMF не угодили ? В рамках постановки задачи требуется лишь, чтобы файл, на базе которого пойдет передача сообщений, был один и тот же. Общее имя для мэппинга и расположение его в Global совсем не обязательно.
Насколько я понимаю фразы
не может быть запущено одновременно в двух терминальных сессиях на одном сервере
и
Теперь мне надо послать сообщение (postMessage) окну приложения, чтобы оно закрылось.
задача стоит такая
1) Обнаружить уже запущенный экземпляр в другой терминальной сессии
2) Передать ему команду.
Если использовать MMF для передачи команды, необходимо, чтобы этот MMF был виден в обоих сеансах, а для этого его необходимо создать в Global Namespace, для чего, в свою очередь, нужна SeCreateGlobal. Нет? Плюс к тому потребуется механизм уведомлений о том, что команда размещена в MMF. Но если команда — одна-едениственная и не требует передачи доп. параметров, то надобность MMF совсем пропадает, уведомление и будет самой командой.
Однако построить такую систему с необходимым уровнем надёжности на одних объектах типа семафора или эвента в условиях терминального сервера вряд-ли возможно, и в любом случае потребует неоправданного усложнения.
Из всего изложенного, по-моему, и следует вывод, о необходимости использования полноценного IPC со встроенной системой уведомления получателя. К вышеуказанным я-бы, пожалуй, добавил Mailslots, причём как наиболее удобные в данном случае.
По-моему так.