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
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
de referencia de