сообщения, отправленные на HWND_BROADCAST, отправляются на другие рабочие столы?

Я пытаюсь определить некоторые детали того, как работает HWND_BROADCAST. К сожалению, в MSDN нет конкретной страницы для этого значения; он лишь мимоходом упоминается в нескольких других статьях, например, для SendMessage и PostMessage .

Что я особенно хочу знать, так это то, принимаются ли сообщения, отправленные на HWND_BROADCAST, окнами, связанными с другими рабочими столами на той же оконной станции. В документах говорится, что сообщение будет отправлено «всем окнам верхнего уровня в системе», но ясно, что это не может быть строго правдой. Например, я уверен, что они не перейдут к окнам в других сеансах входа в систему (например, на терминальном сервере). Я предполагаю, что они, по крайней мере, ограничены оконной станцией вызывающего процесса, но я не знаю, ограничены ли они также рабочим столом вызывающего потока (каждый поток связан с одним рабочим столом).

В худшем случае я могу написать код, чтобы проверить это эмпирически, но кто-нибудь уже знает ответ?


person Charlie    schedule 23.05.2009    source источник


Ответы (2)


Ты прав. Сообщения, отправленные таким образом, будут отправляться только в окна верхнего уровня текущего сеанса/рабочего стола Windows. Ни на какой другой рабочий стол они не перейдут.

person Robert Harvey    schedule 23.05.2009
comment
Я не проверял это, но я верю вам на слово. Спасибо! - person Charlie; 05.06.2009

Vista заблокирует доставку сообщения в окна верхнего уровня, если оно исходит от процесса с более низкими привилегиями, вам следует об этом позаботиться.

person Yigang Wu    schedule 23.05.2009