SendMessageW, fonction (winuser.h)
Envoie le message spécifié à une ou plusieurs fenêtres. 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 ou SendNotifyMessage . Pour publier un message dans la file d’attente de messages d’un thread et le retourner immédiatement, utilisez la fonction PostMessage ou PostThreadMessage .
Syntaxe
LRESULT SendMessageW(
[in] HWND hWnd,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam
);
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 désactivées ou invisibles non propriétaires, 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 à des files d’attente de messages de threads dans des processus de niveau d’intégrité inférieur ou égal.
[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
Informations supplémentaires spécifiques au message.
[in] lParam
Type : LPARAM
Informations supplémentaires spécifiques au message.
Valeur retournée
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 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 de 0 à (WM_USER-1)). Pour envoyer d’autres messages (ceux = >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 thread différent, le système bascule vers ce thread et appelle la procédure de fenêtre appropriée. Les messages envoyés entre les threads sont traités uniquement 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 entrants non mis en file d’attente en attendant que son message soit traité. Pour éviter cela, utilisez SendMessageTimeout avec SMTO_BLOCK défini. Pour plus d’informations sur les messages sans file d’attente, consultez Messages sans file d’attente.
Une application d’accessibilité peut utiliser SendMessage pour envoyer des messages WM_APPCOMMAND à l’interpréteur de commandes afin de lancer des applications. Il n’est pas garanti que cette fonctionnalité fonctionne pour d’autres types d’applications.
Exemples
Pour obtenir un exemple, consultez Affichage d’une entrée clavier.
Notes
L’en-tête winuser.h définit SendMessage 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. La combinaison 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.
Configuration requise
Condition requise | Valeur |
---|---|
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
Messages et files d’attente de messages
Référence