Compartir a través de


Función SendMessageA (winuser.h)

Envía el mensaje especificado a una ventana o ventana. La función SendMessage llama al procedimiento de ventana para la ventana especificada y no devuelve hasta que el procedimiento de ventana haya procesado el mensaje.

Para enviar un mensaje y devolver inmediatamente, use el SendMessageCallback o función sendNotifyMessage. Para publicar un mensaje en la cola de mensajes de un subproceso y devolverlo inmediatamente, use la función PostMessage o PostThreadMessage.

Sintaxis

LRESULT SendMessageA(
  [in] HWND   hWnd,
  [in] UINT   Msg,
  [in] WPARAM wParam,
  [in] LPARAM lParam
);

Parámetros

[in] hWnd

Tipo: HWND

Identificador de la ventana cuyo procedimiento de ventana recibirá el mensaje. Si este parámetro es HWND_BROADCAST ((HWND)0xffff), el mensaje se envía a todas las ventanas de nivel superior del sistema, incluidas las ventanas deshabilitadas o invisibles, las ventanas superpuestas y las ventanas emergentes; pero el mensaje no se envía a ventanas secundarias.

El envío de mensajes está sujeto a UIPI. El subproceso de un proceso solo puede enviar mensajes a colas de mensajes de subprocesos en procesos de nivel de integridad menor o igual.

[in] Msg

Tipo: UINT

Mensaje que se va a enviar.

Para obtener listas de los mensajes proporcionados por el sistema, consulte System-Defined Mensajes.

[in] wParam

Tipo: WPARAM de

Información adicional específica del mensaje.

[in] lParam

Tipo: LPARAM

Información adicional específica del mensaje.

Valor devuelto

Tipo: LRESULT

El valor devuelto especifica el resultado del procesamiento del mensaje; depende del mensaje enviado.

Observaciones

Cuando uiPI bloquea un mensaje, se recupera con GetLastError, se establece en 5 (acceso denegado).

Las aplicaciones que necesitan comunicarse mediante HWND_BROADCAST deben usar la función RegisterWindowMessage para obtener un mensaje único para la comunicación entre aplicaciones.

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

Si el subproceso de llamada creó la ventana especificada, el procedimiento de ventana se llama inmediatamente como una subrutina. Si la ventana especificada se creó mediante un subproceso diferente, el sistema cambia a ese subproceso y llama al procedimiento de ventana adecuado. Los mensajes enviados entre subprocesos solo se procesan cuando el subproceso receptor ejecuta código de recuperación de mensajes. El subproceso de envío se bloquea hasta que el subproceso receptor procesa el mensaje. Sin embargo, el subproceso de envío procesará los mensajes entrantes no puestos en cola mientras espera a que se procese su mensaje. Para evitar esto, use SendMessageTimeout con SMTO_BLOCK establecido. Para obtener más información sobre los mensajes no puestos en cola, vea mensajes no puestos.

Una aplicación de accesibilidad puede usar SendMessage para enviar mensajes WM_APPCOMMAND al shell para iniciar aplicaciones. No se garantiza que esta funcionalidad funcione para otros tipos de aplicaciones.

Ejemplos

Para obtener un ejemplo, vea Mostrar entrada de teclado.

Nota

El encabezado winuser.h define SendMessage 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 neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winuser.h (incluya Windows.h)
biblioteca de User32.lib
DLL de User32.dll
conjunto de API de ext-ms-win-ntuser-message-l1-1-0 (introducido en Windows 8)

Consulte también

conceptual de

InSendMessage

mensajes y colas de mensajes

PostMessage

PostThreadMessage

de referencia de

registerWindowMessage

SendDlgItemMessage

SendMessageCallback

SendMessageTimeout

SendNotifyMessage