2009-05-23 54 views
3

HWND_BROADCASTの仕組みの詳細をいくつか調べようとしています。残念ながら、MSDNにはこの値の特定のページがありません。それは、SendMessagePostMessageのもののようないくつかの他の記事を渡す際にのみ言及されています。HWND_BROADCASTに送信されたメッセージは他のデスクトップに送信されますか?

私が特に知りたいのは、HWND_BROADCASTに送信されたメッセージが、同じウィンドウステーション内の他のデスクトップに関連付けられたウィンドウによって受信されるかどうかです。ドキュメントでは、メッセージは「システム内のすべてのトップレベルウィンドウ」に移動しますが、それは厳密には真実ではありません。たとえば、他のログオンセッション(たとえば、ターミナルサーバー上)でウィンドウに移動しないと確信しています。私の推測では、呼び出し元のプロセスのウィンドウステーションには少なくとも制限されていますが、呼び出しスレッドのデスクトップに制限されているかどうかはわかりません(各スレッドは1つのデスクトップに関連付けられています)。

最悪の場合これを経験的にテストするためのコードを書くことはできますが、誰かがすでにその答えを知っていますか?

答えて

3

あなたは正しいです。この方法で送信されるメッセージは、現在ログインしているWindowsセッション/デスクトップの最上位ウィンドウにのみ表示されます。彼らは他のデスクトップには行きません。

+0

私はこれをテストしていませんが、私はあなたの言葉を受け取ります。ありがとう! – Charlie

1

Vistaは、特権の低いプロセスからのメッセージであれば、トップレベルのウィンドウに配信されるメッセージをブロックしますので、気を付けてください。

関連する問題