Когда у вас есть консольный клиент и COM-сервер, можете ли вы вызвать ::MessageBox(...) с COM-сервера и ожидать, что он сработает?
MessageBox на внепроцессном COM-сервере
Ответы (2)
Да, вы можете, но в некоторых случаях окно будет отображаться на другом рабочем столе и эффективно блокировать вызывающий поток, поэтому вам лучше не пробовать это, кроме как в целях отладки.
person
sharptooth
schedule
28.06.2010
Вы можете убедиться, что право собственности на окно сообщений указано правильно, установив родительский параметр на HWND консоли вместо NULL (HWND рабочего стола). См.
http://support.microsoft.com/kb/124103
- person Ryan Ginstrom; 28.06.2010
Вы можете использовать функцию WTSSendMessage
(см. http://msdn.microsoft.com/en-us/library/aa383842.aspx и http://msdn.microsoft.com/en-us/library/ms683502.aspx) вместо MessageBox
.
Чтобы получить идентификатор сеанса SessionId
, вы можете использовать WTS_CURRENT_SESSION
или WTSEnumerateSessions
или WTSGetActiveConsoleSessionId
или GetTokenInformation
с TokenSessionId
и токеном клиента, полученным во время олицетворения клиента. Все зависит от сценариев, которые у вас есть.
person
Oleg
schedule
28.06.2010