Если у вас есть консольный клиент и COM-сервер, можете ли вы вызвать :: MessageBox (...) с COM-сервера и ожидать, что он будет работать?
Да, можно, но в некоторых случаях поле будет отображаться на другом рабочем столе и эффективно блокировать вызывающий поток, поэтому лучше не пытаться делать это иначе, как для целей отладки.
Вы можете использовать функцию WTSSendMessage (см. http://msdn.microsoft.com/en-us/library/aa383842.aspx и http://msdn.microsoft.com/en-us/library/ms683502.aspx) вместо MessageBox.
WTSSendMessage
MessageBox
Чтобы получить идентификатор сеанса SessionId, вы можете использовать WTS_CURRENT_SESSION или WTSEnumerateSessions или WTSGetActiveConsoleSessionId или GetTokenInformation с TokenSessionId и маркер клиента, полученный во время подражания клиенту. Все зависит от сценариев, которые у вас есть.
SessionId
WTS_CURRENT_SESSION
WTSEnumerateSessions
WTSGetActiveConsoleSessionId
GetTokenInformation
TokenSessionId