Compartir a través de


Función BroadcastSystemMessageExA (winuser.h)

Envía un mensaje a los destinatarios especificados. Los destinatarios pueden ser aplicaciones, controladores instalables, controladores de red, controladores de dispositivo de nivel de sistema o cualquier combinación de estos componentes del sistema.

Esta función es similar a BroadcastSystemMessage , salvo que esta función puede devolver más información de los destinatarios.

Sintaxis

long BroadcastSystemMessageExA(
  [in]                DWORD    flags,
  [in, out, optional] LPDWORD  lpInfo,
  [in]                UINT     Msg,
  [in]                WPARAM   wParam,
  [in]                LPARAM   lParam,
  [out, optional]     PBSMINFO pbsmInfo
);

Parámetros

[in] flags

Tipo: DWORD

Opción de difusión. Este parámetro puede ser uno o más de los siguientes valores.

Valor Significado
BSF_ALLOWSFW
0x00000080
Permite al destinatario establecer la ventana de primer plano mientras se procesa el mensaje.
BSF_FLUSHDISK
0x00000004
Vacía el disco después de que cada destinatario procese el mensaje.
BSF_FORCEIFHUNG
0x00000020
Continúa difundiendo el mensaje, incluso si el período de tiempo de espera transcurre o uno de los destinatarios no responde.
BSF_IGNORECURRENTTASK
0x00000002
No envía el mensaje a las ventanas que pertenecen a la tarea actual. Esto impide que una aplicación reciba su propio mensaje.
BSF_LUID
0x00000400
Si se establece BSF_LUID , el mensaje se envía a la ventana que tiene el mismo LUID especificado en el miembro luid de la estructura BSMINFO .

Windows 2000: Esta marca no se admite.

BSF_NOHANG
0x00000008
Fuerza a una aplicación que no responde para agotar el tiempo de espera. Si uno de los destinatarios agota el tiempo de espera, no continúe difundiendo el mensaje.
BSF_NOTIMEOUTIFNOTHUNG
0x00000040
Espera una respuesta al mensaje, siempre y cuando el destinatario no responda. No agota el tiempo de espera.
BSF_POSTMESSAGE
0x00000010
Publica el mensaje. No use en combinación con BSF_QUERY.
BSF_RETURNHDESK
0x00000200
Si se deniega el acceso y se establecen tanto este como BSF_QUERY , BSMINFO devuelve el identificador de escritorio y el identificador de ventana. Si se deniega el acceso y solo se establece BSF_QUERY , BSMINFO devuelve solo el identificador de ventana.

Windows 2000: Esta marca no se admite.

BSF_QUERY
0x00000001
Envía el mensaje a un destinatario cada vez, enviando a un destinatario posterior solo si el destinatario actual devuelve TRUE.
BSF_SENDNOTIFYMESSAGE
0x00000100
Envía el mensaje mediante la función SendNotifyMessage . No use en combinación con BSF_QUERY.

[in, out, optional] lpInfo

Tipo: LPDWORD

Puntero a una variable que contiene y recibe información sobre los destinatarios del mensaje.

Cuando la función devuelve, esta variable recibe una combinación de estos valores que identifican qué destinatarios recibieron realmente el mensaje.

Si este parámetro es NULL, la función transmite a todos los componentes.

Este parámetro puede ser uno o más de los siguientes valores.

Valor Significado
BSM_ALLCOMPONENTS
0x00000000
Difundir a todos los componentes del sistema.
BSM_ALLDESKTOPS
0x00000010
Difundir a todos los escritorios. Requiere el privilegio SE_TCB_NAME .
BSM_APPLICATIONS
0x00000008
Difusión a aplicaciones.

[in] Msg

Tipo: UINT

El mensaje que se debe enviar.

Para obtener listas de los mensajes proporcionados por el sistema, consulte Mensajes definidos por el sistema.

[in] wParam

Tipo: WPARAM

Información adicional específica del mensaje.

[in] lParam

Tipo: LPARAM

Información adicional específica del mensaje.

[out, optional] pbsmInfo

Tipo: PBSMINFO

Puntero a una estructura BSMINFO que contiene información adicional si se deniega la solicitud y dwFlags se establece en BSF_QUERY.

Valor devuelto

Tipo: long

Si la función se ejecuta correctamente, el valor devuelto es un valor positivo.

Si la función no puede difundir el mensaje, el valor devuelto es –1.

Si el parámetro dwFlags es BSF_QUERY y al menos un destinatario devolvió BROADCAST_QUERY_DENY al mensaje correspondiente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Si no se especifica BSF_QUERY , la función envía el mensaje especificado a todos los destinatarios solicitados, ignorando los valores devueltos por esos destinatarios.

Si el subproceso del autor de la llamada está en un escritorio distinto del de la ventana que denegó la solicitud, el llamador debe llamar a SetThreadDesktop(hdesk) para consultar cualquier cosa en esa ventana. Además, el autor de la llamada debe llamar a CloseDesktop en el identificador de hdesk devuelto.

El sistema solo realiza la serialización de los mensajes del sistema (los comprendidos entre 0 y (WM_USER-1). Para enviar otros mensajes (aquellos >= WM_USER) a otro proceso, debe realizar la serialización personalizada.

Nota

El encabezado winuser.h define BroadcastSystemMessageEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winuser.h (incluya Windows.h)
Library User32.lib
Archivo DLL User32.dll

Consulte también

BSMINFO

BroadcastSystemMessage

Conceptual

Mensajes y colas de mensajes

Referencia

SendNotifyMessage