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 de la fenêtre dont la procédure de fenêtre recevra 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 non propriétaires désactivées ou invisibles. 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 uTimeout multipliée par le nombre de fenêtres de niveau supérieur.

[in] Msg

Type : UINT

Le message à envoyer.

Pour obtenir la liste des messages fournis par le système, consultez Messages définis par le système.

[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 prendre une ou plusieurs des valeurs suivantes.

Valeur Signification
SMTO_ABORTIFHUNG
0x0002
La fonction retourne sans attendre que le délai d’expiration 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 d’autres requêtes jusqu’à ce que la fonction retourne.
SMTO_NORMAL
0x0000
Le thread appelant n’est pas empêché de traiter d’autres demandes en attendant le retour de la fonction.
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
La fonction n’applique pas le délai d’expiration 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 si son thread propre meurt pendant le traitement du message.

[in] uTimeout

Type : UINT

Durée de la période d’expiration, en millisecondes. Si le message est un message diffusé, chaque fenêtre peut utiliser la période d’expiration complète. Par exemple, si vous spécifiez un délai d’expiration de cinq secondes et que trois fenêtres de niveau supérieur ne parviennent pas à traiter le message, vous pouvez avoir jusqu’à 15 secondes de délai.

[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 retournée

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 délai d’expiration des fenêtres individuelles si HWND_BROADCAST est utilisé.

Si la fonction échoue ou expire, la valeur de retour est 0. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError. Si GetLastError retourne ERROR_TIMEOUT, la fonction a expiré.

Windows 2000 : Si GetLastError retourne 0, la fonction a expiré.

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 thread différent, ne retourne pas tant que la procédure de fenêtre n’a pas traité le message ou que le délai d’expiration spécifié n’est pas écoulé. Si la fenêtre qui reçoit 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 dans un délai de 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 (ceux >= WM_USER) à un autre processus, vous devez effectuer un marshaling personnalisé.

Notes

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

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête winuser.h (inclure 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

Conceptuel

GetMessage

InSendMessage

Messages et files d’attente de messages

PostMessage

Référence

SendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage