Partager via


SendMessageTimeoutA, fonction (winuser.h)

Envoie le message spécifié à une ou plusieurs fenêtres.

Syntaxe

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
);

Paramètres

[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.

Valeur Signification
SMTO_ABORTIFHUNG
0x0002
La fonction retourne sans attendre que le délai d’attente s’écoule si le thread de réception semble ne pas répondre ou « se bloque ».
SMTO_BLOCK
0x0001
Empêche le thread appelant de traiter toutes les autres requêtes jusqu’à ce que la fonction retourne.
SMTO_NORMAL
0x0000
Le thread appelant n’est pas empêché de traiter d’autres requêtes en attendant que la fonction retourne.
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
La fonction n’applique pas le délai d’attente tant que le thread de réception traite les messages.
SMTO_ERRORONEXIT
0x0020
La fonction doit retourner 0 si la fenêtre de réception est détruite ou que son thread propriétaire meurt pendant le traitement du message.

[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é.

Valeur de retour

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.

Remarques

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é.

Note

L’en-tête winuser.h définit SendMessageTimeout comme 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.

Exigences

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)

Voir aussi

conceptuelle

GetMessage

InSendMessage

messages et files d’attente de messages

PostMessage

de référence

sendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage