SendMessageTimeoutA, fonction (winuser.h)
Envoie le message spécifié à une ou plusieurs fenêtres.
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
);
[in] hWnd
Type : HWND
Handle vers la fenêtre dont la procédure de fenêtre reçoit le message.
Si ce paramètre est HWND_BROADCAST ((HWND)0xffff), le message est envoyé à toutes les fenêtres de niveau supérieur du système, y compris les fenêtres désactivées ou invisibles non noyées. La fonction ne retourne pas tant que chaque fenêtre n’a pas expiré. Par conséquent, le temps d’attente total peut être jusqu’à la valeur de uTimeout multiplié par le nombre de fenêtres de niveau supérieur.
[in] Msg
Type : uiNT
Message à envoyer.
Pour obtenir des listes des messages fournis par le système, consultez System-Defined Messages.
[in] wParam
Type : WPARAM
Toutes les informations supplémentaires spécifiques aux messages.
[in] lParam
Type : LPARAM
Toutes les informations supplémentaires spécifiques aux messages.
[in] fuFlags
Type : uiNT
Comportement de cette fonction. Ce paramètre peut être une ou plusieurs des valeurs suivantes.
[in] uTimeout
Type : uiNT
Durée du délai d’attente, en millisecondes. Si le message est un message de diffusion, chaque fenêtre peut utiliser la période d’attente complète. Par exemple, si vous spécifiez une période d’attente de cinq secondes et qu’il existe trois fenêtres de niveau supérieur qui ne parviennent pas à traiter le message, vous pourriez avoir jusqu’à 15 secondes de retard.
[out, optional] lpdwResult
Type : PDWORD_PTR
Résultat du traitement des messages. La valeur de ce paramètre dépend du message spécifié.
Type : LRESULT
Si la fonction réussit, la valeur de retour est différente de zéro. sendMessageTimeout ne fournit pas d’informations sur le minutage des fenêtres individuelles si HWND_BROADCAST est utilisé.
Si la fonction échoue ou expire, la valeur de retour est 0. Notez que la fonction n’appelle pas toujours SetLastError en cas d’échec. Si la raison de l’échec est importante pour vous, appelez SetLastError(ERROR_SUCCESS) avant d’appeler SendMessageTimeout. Si la fonction retourne 0 et que GetLastError retourne ERROR_SUCCESS, traitez-la comme une défaillance générique.
La fonction appelle la procédure de fenêtre pour la fenêtre spécifiée et, si la fenêtre spécifiée appartient à un autre thread, ne retourne pas tant que la procédure de fenêtre n’a pas traité le message ou que le délai d’attente spécifié s’est écoulé. Si la fenêtre recevant le message appartient à la même file d’attente que le thread actif, la procédure de fenêtre est appelée directement : la valeur de délai d’attente est ignorée.
Cette fonction considère qu’un thread ne répond pas s’il n’a pas appelé GetMessage ou une fonction similaire en cinq secondes.
Le système effectue uniquement le marshaling pour les messages système (ceux de la plage 0 à (WM_USER-1)). Pour envoyer d’autres messages (ces >= WM_USER) à un autre processus, vous devez effectuer un marshaling personnalisé.
Notes
L’en-tête winuser.h définit SendMessageTimeout en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
serveur minimum pris en charge | Windows 2000 Server [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | winuser.h (include Windows.h) |
bibliothèque | User32.lib |
DLL | User32.dll |
ensemble d’API | ext-ms-win-ntuser-message-l1-1-0 (introduit dans Windows 8) |
conceptuelle
messages et files d’attente de messages
de référence