SendMessageW, fonction (winuser.h)
Envoie le message spécifié à une fenêtre ou à une fenêtre. La fonction SendMessage appelle la procédure de fenêtre pour la fenêtre spécifiée et ne retourne pas tant que la procédure de fenêtre n’a pas traité le message.
Pour envoyer un message et retourner immédiatement, utilisez la fonction SendMessageCallback
Syntaxe
LRESULT SendMessageW(
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
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, les fenêtres superposées et les fenêtres contextuelles ; mais le message n’est pas envoyé aux fenêtres enfants.
L’envoi de messages est soumis à l’UIPI. Le thread d’un processus peut envoyer des messages uniquement aux files d’attente de messages des threads dans les processus de niveau d’intégrité inférieur ou égal.
[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
Informations supplémentaires spécifiques aux messages.
[in] lParam
Type : LPARAM
Informations supplémentaires spécifiques aux messages.
Valeur de retour
Type : LRESULT
La valeur de retour spécifie le résultat du traitement du message ; cela dépend du message envoyé.
Remarques
Lorsqu’un message est bloqué par l’UIPI la dernière erreur, récupérée avec GetLastError, est définie sur 5 (accès refusé).
Les applications qui doivent communiquer à l’aide de HWND_BROADCAST doivent utiliser la fonction RegisterWindowMessage pour obtenir un message unique pour la communication entre applications.
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é.
Si la fenêtre spécifiée a été créée par le thread appelant, la procédure de fenêtre est appelée immédiatement en tant que sous-routine. Si la fenêtre spécifiée a été créée par un autre thread, le système bascule vers ce thread et appelle la procédure de fenêtre appropriée. Les messages envoyés entre les threads ne sont traités que lorsque le thread de réception exécute le code de récupération des messages. Le thread d’envoi est bloqué jusqu’à ce que le thread de réception traite le message. Toutefois, le thread d’envoi traite les messages non mis en file d’attente entrants en attendant que son message soit traité. Pour éviter cela, utilisez sendMessageTimeout avec SMTO_BLOCK défini. Pour plus d’informations sur les messages non mis en file d’attente, consultez Messages non mis en file d’attente.
Une application d’accessibilité peut utiliser SendMessage pour envoyer des messages WM_APPCOMMAND à l’interpréteur de commandes pour lancer des applications. Cette fonctionnalité n’est pas garantie de fonctionner pour d’autres types d’applications.
Exemples
Pour obtenir un exemple, consultez affichage desd’entrée clavier .
Note
L’en-tête winuser.h définit SendMessage 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
messages et files d’attente de messages
de référence