Функция BroadcastSystemMessageExA (winuser.h)
Отправляет сообщение указанным получателям. Получателями могут быть приложения, устанавливаемые драйверы, сетевые драйверы, драйверы устройств на уровне системы или любое сочетание этих системных компонентов.
Эта функция похожа на BroadcastSystemMessage , за исключением того, что эта функция может возвращать дополнительные сведения от получателей.
Синтаксис
long BroadcastSystemMessageExA(
[in] DWORD flags,
[in, out, optional] LPDWORD lpInfo,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam,
[out, optional] PBSMINFO pbsmInfo
);
Параметры
[in] flags
Тип: DWORD
Параметр широковещательного вещания. Этот параметр может иметь одно или несколько из следующих значений.
Значение | Значение |
---|---|
|
Позволяет получателю задать окно переднего плана во время обработки сообщения. |
|
Очищает диск после того, как каждый получатель обработает сообщение. |
|
Продолжает транслировать сообщение, даже если истекло время ожидания или один из получателей не отвечает. |
|
Не отправляет сообщение в окна, принадлежащие текущей задаче. Это предотвращает получение приложением собственного сообщения. |
|
Если задано BSF_LUID , сообщение отправляется в окно с тем же идентификатором LUID, что и в элементе luid структуры BSMINFO .
Windows 2000: Этот флаг не поддерживается. |
|
Принудительное истечение времени ожидания приложения, не отвечающего на запросы. Если у одного из получателей истекает время ожидания, не продолжайте трансляцию сообщения. |
|
Ожидает ответа на сообщение, если получатель не отвечает. Время ожидания не истекает. |
|
Публикует сообщение. Не используйте в сочетании с BSF_QUERY. |
|
Если доступ запрещен и этот и BSF_QUERY заданы, BSMINFO возвращает дескриптор рабочего стола и дескриптор окна. Если доступ запрещен и задан только BSF_QUERY , BSMINFO возвращает только дескриптор окна.
Windows 2000: Этот флаг не поддерживается. |
|
Отправляет сообщение одному получателю за раз, отправляя его следующему получателю только в том случае, если текущий получатель возвращает значение TRUE. |
|
Отправляет сообщение с помощью функции SendNotifyMessage . Не используйте в сочетании с BSF_QUERY. |
[in, out, optional] lpInfo
Тип: LPDWORD
Указатель на переменную, которая содержит и получает сведения о получателях сообщения.
При возврате функции эта переменная получает сочетание этих значений, определяющее, какие получатели действительно получили сообщение.
Если этот параметр имеет значение NULL, функция передается всем компонентам.
Этот параметр может иметь одно или несколько из следующих значений.
Значение | Значение |
---|---|
|
Широковещательная рассылка для всех компонентов системы. |
|
Широковещательная трансляция на всех рабочих столах. Требуется привилегия SE_TCB_NAME . |
|
Широковещательная рассылка в приложения. |
[in] Msg
Тип: UINT
Отправляемое сообщение.
Списки системных сообщений см. в разделе Системные сообщения.
[in] wParam
Тип: WPARAM
Дополнительные сведения, относящиеся к сообщению.
[in] lParam
Тип: LPARAM
Дополнительные сведения, относящиеся к сообщению.
[out, optional] pbsmInfo
Тип: PBSMINFO
Указатель на структуру BSMINFO , которая содержит дополнительные сведения, если запрос отклонен и параметру dwFlags присвоено значение BSF_QUERY.
Возвращаемое значение
Тип: long
Если функция выполняется успешно, возвращаемое значение является положительным.
Если функция не может транслировать сообщение, возвращается значение –1.
Если параметр dwFlags имеет значение BSF_QUERY и хотя бы один получатель вернул BROADCAST_QUERY_DENY соответствующее сообщение, возвращаемое значение равно нулю. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Если BSF_QUERY не указан, функция отправляет указанное сообщение всем запрошенным получателям, игнорируя значения, возвращенные этими получателями.
Если поток вызывающего объекта находится на рабочем столе, отличном от потока окна, которое отклонило запрос, вызывающий объект должен вызвать Метод SetThreadDesktop(hdesk), чтобы запросить что-либо в этом окне. Кроме того, вызывающий объект должен вызвать CloseDesktop для возвращенного дескриптора hdesk .
Система выполняет маршалинг только для системных сообщений (в диапазоне от 0 до (WM_USER–1)). Чтобы отправить другие сообщения (т. е>. WM_USER) в другой процесс, необходимо выполнить настраиваемую маршалинг.
Примечание
Заголовок winuser.h определяет BroadcastSystemMessageEx в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
См. также раздел
Основные понятия
Справочные материалы