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
Digite: 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 sem proprietário desabilitadas ou invisíveis. A função não retorna até que cada janela tenha esgotado. 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 Mensagens definidas pelo sistema.
[in] wParam
Tipo: WPARAM
Qualquer informação adicional específica da mensagem.
[in] lParam
Tipo: LPARAM
Qualquer informação adicional específica da mensagem.
[in] fuFlags
Tipo: UINT
O comportamento dessa função. Esse parâmetro pode usar um dos valores a seguir.
[in] uTimeout
Tipo: UINT
A duração do período de tempo limite, em milissegundos. Se a mensagem for uma mensagem de difusã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 processem a mensagem, poderá ter um atraso de até 15 segundos.
[out, optional] lpdwResult
Tipo: PDWORD_PTR
O resultado de processamento de mensagem. O valor desse parâmetro depende da mensagem especificada.
Valor retornado
Tipo: LRESULT
Se a função for bem-sucedida, o valor retornado será diferente de zero. SendMessageTimeout não fornece informações sobre janelas individuais atingindo o tempo limite se HWND_BROADCAST for usado.
Se a função falhar ou atingir o tempo limite, o valor retornado será 0. Para obter informações de erro estendidas, chame GetLastError. Se GetLastError retornar ERROR_TIMEOUT, a função atingiu o tempo limite.
Windows 2000: Se GetLastError retornar 0, a função atingiu o tempo limite.
Comentários
A função chama o procedimento de janela para a janela especificada e, se a janela especificada pertencer 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 não tiver chamado GetMessage ou uma função semelhante dentro de cinco segundos.
O sistema faz marshaling apenas para mensagens do sistema (aquelas no intervalo de 0 a (WM_USER-1)). Para enviar outras mensagens (essas >= WM_USER) para outro processo, você deve fazer marshaling personalizado.
Observação
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 de 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 Convenções para protótipos de função.
Requisitos
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | winuser.h (inclua Windows.h) |
Biblioteca | User32.lib |
DLL | User32.dll |
Conjunto de APIs | ext-ms-win-ntuser-message-l1-1-0 (introduzido no Windows 8) |
Confira também
Conceitual
Mensagens e filas de mensagens
Referência
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de