2009-05-23 7 views
3

J'essaye de déterminer quelques-uns des détails du fonctionnement de HWND_BROADCAST. Malheureusement, MSDN n'a pas de page spécifique pour cette valeur; il est seulement mentionné en passant dans plusieurs autres articles, tels que ceux pour SendMessage et PostMessage. Ce que je veux spécifiquement savoir, c'est si les messages envoyés à HWND_BROADCAST sont reçus par des fenêtres associées à d'autres bureaux dans la même station de fenêtre. Les docs disent que le message ira à «toutes les fenêtres de haut niveau du système», mais il est clair que cela ne peut pas être strictement vrai. Par exemple, je suis sûr qu'ils n'iraient pas à Windows dans d'autres sessions d'ouverture de session (par exemple sur un serveur de terminal). Je suppose qu'ils sont au moins limités à la station window du processus appelant, mais je ne sais pas s'ils sont également limités au bureau du thread appelant (chaque thread est associé à un seul bureau).Est-ce que les messages envoyés à HWND_BROADCAST vont vers d'autres bureaux?

Le pire des cas Je peux écrire du code pour le tester empiriquement, mais quelqu'un connaît-il déjà la réponse?

Répondre

3

Vous avez raison. Les messages envoyés de cette manière vont uniquement aux fenêtres de niveau supérieur de la session/bureau Windows actuellement connectée. Ils ne vont pas à un autre bureau.

+0

Je n'ai pas testé cela, mais je vais vous croire sur parole. Merci! – Charlie

1

Vista bloquera le message à livrer aux fenêtres de niveau supérieur s'il provient d'un processus privilégié inférieur, vous devriez en prendre soin.