Функция BroadcastSystemMessageEx
отправляет сообщение заданным получателям.
Получателями могут быть прикладные
программы, устанавливаемые драйверы,
сетевые драйверы, драйверы устройств
системного уровня, или любая комбинация
этих компонентов системы
Эта функция подобна BroadcastSystemMessage
за исключением того, что она может
возвратить подробную информацию от
получателей сообщения.
Синтаксис
long BroadcastSystemMessageEx( DWORD dwFlags, LPDWORD lpdwRecipients, UINT uiMessage, WPARAM wParam, LPARAM lParam, PBSMINFO pBSMInfo );
Параметры
dwFlags
[in] Определяет параметры трансляции. Этот параметр может состоять из одного или нескольких значений.
Значение |
Предназначение |
BSF_ALLOWSFW | Windows 2000/XP: Дает возможность получателю установить активное окно в процессе обработки сообщения. |
BSF_FLUSHDISK |
Очистить диск после того, как каждый получатель обработает сообщение. |
BSF_FORCEIFHUNG |
Продолжить транслировать сообщение, даже если истек период блокировки по времени или один из получателей завис. |
BSF_IGNORECURRENTTASK |
Не отправлять сообщение окнам, которые принадлежат текущей задаче. Это предохраняет прикладную программу от приема своего собственного сообщения. |
BSF_LUID | Windows XP: Если флажок BSF_LUID установлен, сообщение отправляется окну, которое имеет тот же самый LUID как определено в члене luid структуры BSMINFO. |
BSF_NOHANG |
Заставить зависшую прикладную программу прерваться. Если один из получателей прервал работу, не продолжать трансляцию сообщений. |
BSF_NOTIMEOUTIFNOTHUNG |
Ждать отклика на сообщение до тех пор, пока получатель не зависнет. Перерыва не делать. |
BSF_POSTMESSAGE |
Поместить сообщение в очередь. Не используйте в комбинации с флажком BSF_QUERY. |
BSF_RETURNHDESK | Windows XP: Если доступ отклоняется, и если и этот флажок и флажок BSF_QUERY установлены, структура BSMINFO возвращает значение и дескриптора рабочего стола и дескриптора окна. Если доступ отклоняется, и установлен только флажок BSF_QUERY, BSMINFO возвращает только дескриптор окна. |
BSF_QUERY |
За один раз отправлять сообщение одному получателю, отправляя его следующему получателю только тогда, если текущий получатель возвращает значение ИСТИНА (TRUE). |
BSF_SENDNOTIFYMESSAGE | Отправляет сообщение используя функцию SendNotifyMessage. Не используйте этот флажок в комбинации с флажком BSF_QUERY. |
lpdwRecipients
[in] Указатель на переменную, которая содержит и принимает информацию о получателях сообщения.Когда функция возвращает значение, эта переменная получает комбинацию значений той идентификации , которую получатели фактически приняли в сообщении.
Если этот параметр равен ПУСТО (NULL), функция транслирует сообщение всем компонентам.
Этот параметр может состоять из одного или нескольких ниже следующих значений:
Значение |
Предназначение |
BSM_ALLCOMPONENTS |
Трансляция всем компонентам системы. |
BSM_ALLDESKTOPS |
Windows NT/2000/XP: Трансляция всем рабочим столам. Требует привилегии SE_TCB_NAME. |
BSM_APPLICATIONS |
Трансляция прикладным программам. |
uiMessage
[in] Определяет сообщение, которое должно быть отправлено.wParam
[in] Устанавливает дополнительную конкретизирующую сообщение информацию.lParam
[in] Устанавливает дополнительную конкретизирующую сообщение информацию.pBSMInfo
[out] Указатель на структуру BSMINFO, которая содержит дополнительную информацию, если запрос отклонен и параметр dwFlags установлен в BSF_QUERY.Возвращаемые значения
Если функция завершается успешно, величина возвращаемого значения - положительное число.
Если функция неспособна транслировать сообщение, величина возвращаемого значения - (минус)1.
Если параметр
dwFlags равен BSF_QUERY, и по крайней мере один получатель возвратил значение BROADCAST_QUERY_DENY для соответствующего сообщения, величина возвращаемого значения - нуль. Чтобы получить дополнительную информацию об ошибке, вызовите функцию GetLastError.Замечания
Если флажок BSF_QUERY не определен, функция отправляет заданное сообщение всем необходимым получателям, игнорируя значения, возвращенные этими получателями.
Если поток вызывающей программы включает рабочий стол другого, а не того окна, которому отказано в запросе, вызывающая программа должна вызвать функцию SetThreadDesktop (hdesk), чтобы сделать запрос чего-нибудь в этом окне. Вызывающая программа также должна вызвать функцию CloseDesktop, чтобы возвратить дескриптор hdesk.
Система делает распределение только системных сообщении (которые в диапазоне от 0 до WM_USER). Чтобы отправлять другие сообщения (которые значением выше WM_USER) другому процессу, Вы должны сделать специальное распределение (маршалинг).
Смотри также
Обзор Сообщения и очереди сообщений, BroadcastSystemMessage, BSMINFO, SendNotifyMessage
Размещение и совместимость BroadcastSystemMessageEx |
|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Нет |
Windows NT |
Нет |
Windows Me |
Нет |
Windows 98 |
Нет |
Windows 95 |
Нет |
Используемая библиотека |
User32.lib |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |