Compartir a través de


Función SendMessageTimeoutA (winuser.h)

Envía el mensaje especificado a una o varias ventanas.

Sintaxis

LRESULT SendMessageTimeoutA(
  [in]            HWND       hWnd,
  [in]            UINT       Msg,
  [in]            WPARAM     wParam,
  [in]            LPARAM     lParam,
  [in]            UINT       fuFlags,
  [in]            UINT       uTimeout,
  [out, optional] PDWORD_PTR lpdwResult
);

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 no visibles. La función no devuelve hasta que se agota el tiempo de espera de cada ventana. Por lo tanto, el tiempo de espera total puede ser hasta el valor de uTimeout multiplicado por el número de ventanas de nivel superior.

[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

Cualquier información adicional específica del mensaje.

[in] lParam

Tipo: LPARAM

Cualquier información adicional específica del mensaje.

[in] fuFlags

Tipo: UINT

Comportamiento de esta función. Este parámetro puede ser uno o varios de los siguientes valores.

Valor Significado
SMTO_ABORTIFHUNG
0x0002
La función devuelve sin esperar a que transcurre el período de tiempo de espera si el subproceso receptor parece no responder o "se bloquea".
SMTO_BLOCK
0x0001
Impide que el subproceso que realiza la llamada procese cualquier otra solicitud hasta que la función devuelva.
SMTO_NORMAL
0x0000
No se impide que el subproceso que realiza la llamada procese otras solicitudes mientras espera a que se devuelva la función.
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
La función no aplica el período de tiempo de espera siempre que el subproceso receptor procese mensajes.
SMTO_ERRORONEXIT
0x0020
La función debe devolver 0 si la ventana de recepción se destruye o su propio subproceso muere mientras se procesa el mensaje.

[in] uTimeout

Tipo: UINT

Duración del período de tiempo de espera, en milisegundos. Si el mensaje es un mensaje de difusión, cada ventana puede usar el período de tiempo de espera completo. Por ejemplo, si especifica un período de tiempo de espera de cinco segundos y hay tres ventanas de nivel superior que no pueden procesar el mensaje, podría tener hasta un retraso de 15 segundos.

[out, optional] lpdwResult

Tipo: PDWORD_PTR

Resultado del procesamiento del mensaje. El valor de este parámetro depende del mensaje especificado.

Valor devuelto

Tipo: LRESULT

Si la función se ejecuta correctamente, el valor devuelto es distinto de cero. SendMessageTimeout no proporciona información sobre el tiempo de espera de ventanas individuales si se usa HWND_BROADCAST.

Si se produce un error en la función o se agota el tiempo de espera, el valor devuelto es 0. Tenga en cuenta que la función no siempre llama a SetLastError en caso de error. Si el motivo del error es importante para usted, llame a SetLastError(ERROR_SUCCESS) antes de llamar a SendMessageTimeout. Si la función devuelve 0 y GetLastError devuelve ERROR_SUCCESS, después lo trata como un error genérico.

Observaciones

La función llama al procedimiento de ventana para la ventana especificada y, si la ventana especificada pertenece a un subproceso diferente, no devuelve hasta que el procedimiento de ventana haya procesado el mensaje o el período de tiempo de espera especificado haya transcurrido. Si la ventana que recibe el mensaje pertenece a la misma cola que el subproceso actual, se llama directamente al procedimiento de ventana, se omite el valor de tiempo de espera.

Esta función considera que un subproceso no responde si no se ha llamado a GetMessage o una función similar en un plazo de cinco segundos.

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.

Nota

El encabezado winuser.h define SendMessageTimeout 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

GetMessage

InSendMessage

mensajes y colas de mensajes

PostMessage

de referencia de

SendDlgItemMessage

SendMessage de

SendMessageCallback

SendNotifyMessage