Função SendMessageTimeoutA (winuser.h)

Envia a mensagem especificada para uma ou mais janelas.

Sintaxe

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

Um identificador para a janela cujo procedimento de janela receberá a mensagem.

Se esse parâmetro for HWND_BROADCAST ((HWND)0xffff), a mensagem será enviada para todas as janelas de nível superior do sistema, incluindo janelas não semeadas desabilitadas ou invisíveis. A função não retorna até que cada janela tenha o tempo limite limite. Portanto, o tempo total de espera pode ser até o valor de uTimeout multiplicado pelo número de janelas de nível superior.

[in] Msg

Tipo: UINT

A mensagem a ser enviada.

Para obter listas das mensagens fornecidas pelo sistema, consulte System-Defined Mensagens.

[in] wParam

Tipo: WPARAM

Quaisquer informações adicionais específicas da mensagem.

[in] lParam

Tipo: LPARAM

Quaisquer informações adicionais específicas da mensagem.

[in] fuFlags

Tipo: UINT

O comportamento dessa função. Esse parâmetro pode ser um ou mais dos valores a seguir.

Valor Significado
SMTO_ABORTIFHUNG
0x0002
A função retorna sem aguardar o período de tempo limite decorrido se o thread de recebimento parecer não responder ou "travar".
SMTO_BLOCK
0x0001
Impede que o thread de chamada processe outras solicitações até que a função retorne.
SMTO_NORMAL
0x0000
O thread de chamada não é impedido de processar outras solicitações enquanto aguarda o retorno da função.
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
A função não impõe o período de tempo limite, desde que o thread de recebimento esteja processando mensagens.
SMTO_ERRORONEXIT
0x0020
A função deverá retornar 0 se a janela de recebimento for destruída ou seu thread proprietário morrer enquanto a mensagem estiver sendo processada.

[in] uTimeout

Tipo: UINT

A duração do período de tempo limite, em milissegundos. Se a mensagem for uma mensagem de transmissão, cada janela poderá usar o período de tempo limite completo. Por exemplo, se você especificar um período de tempo limite de cinco segundos e houver três janelas de nível superior que não processam a mensagem, poderá ter um atraso de até 15 segundos.

[out, optional] lpdwResult

Tipo: PDWORD_PTR

O resultado do processamento da mensagem. O valor desse parâmetro depende da mensagem especificada.

Valor de retorno

Tipo: LRESULT

Se a função for bem-sucedida, o valor retornado não será zero. SendMessageTimeout não fornecerá informações sobre o tempo limite de janelas individuais se HWND_BROADCAST for usado.

Se a função falhar ou atingir o tempo limite, o valor retornado será 0. Observe que a função nem sempre chama SetLastError em caso de falha. Se o motivo da falha for importante para você, chame SetLastError(ERROR_SUCCESS) antes de chamar SendMessageTimeout. Se a função retornar 0 e GetLastError retornar ERROR_SUCCESS, trate-a como uma falha genérica.

Observações

A função chama o procedimento de janela para a janela especificada e, se a janela especificada pertence a um thread diferente, não retorna até que o procedimento de janela tenha processado a mensagem ou o período de tempo limite especificado tenha decorrido. Se a janela que recebe a mensagem pertencer à mesma fila que o thread atual, o procedimento de janela será chamado diretamente– o valor de tempo limite será ignorado.

Essa função considera que um thread não está respondendo se ele não tiver chamado GetMessage ou uma função semelhante dentro de cinco segundos.

O sistema só faz marshalling para mensagens do sistema (aquelas no intervalo de 0 a (WM_USER-1)). Para enviar outras mensagens (aquelas >= WM_USER) para outro processo, você deve fazer o marshalling personalizado.

Nota

O cabeçalho winuser.h define SendMessageTimeout como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho winuser.h (inclua Windows.h)
biblioteca User32.lib
de DLL User32.dll
conjunto de API ext-ms-win-ntuser-message-l1-1-0 (introduzido no Windows 8)

Consulte também

Conceitual

GetMessage

InSendMessage

mensagens e filas de mensagens

PostMessage

de referência de

SendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage