次の方法で共有


Application.AddMessageFilter メソッド

メッセージ フィルタを追加して、ルーティング先にルーティングされる Windows メッセージを監視します。

Public Shared Sub AddMessageFilter( _
   ByVal value As IMessageFilter _)
[C#]
public static void AddMessageFilter(IMessageFiltervalue);
[C++]
public: static void AddMessageFilter(IMessageFilter* value);
[JScript]
public static function AddMessageFilter(
   value : IMessageFilter);

パラメータ

  • value
    インストールする IMessageFilter インターフェイスの実装。

解説

メッセージ フィルタを使用して、メッセージがイベント ハンドラに渡される前に、特定のイベントの発生を回避したり、イベントに特別な操作を実行したりします。メッセージ フィルタはスレッドに固有です。

メッセージをディスパッチされないようにするには、このメソッドに渡す value パラメータ インスタンスで、メッセージの処理コードを持つ PreFilterMessage メソッドをオーバーライドする必要があります。このメソッドは false を返します。

注意   アプリケーションのメッセージ ポンプにメッセージ フィルタを追加すると、パフォーマンスを低下させる場合があります。

使用例

[Visual Basic, C#, C++] メッセージ フィルタは、 IMessageFilter インターフェイスを実装してからでなければ使用できません。 TestMessageFilter というメッセージ フィルタを作成するクラスを次に示します。このフィルタは、マウスの左ボタンに関連するメッセージをすべてブロックします。

 
' Creates a message filter.
Public Class TestMessageFilter
   Implements IMessageFilter

   Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) _
   As Boolean Implements IMessageFilter.PreFilterMessage
      ' Blocks all the messages relating to the left mouse button.
      If ((m.Msg >= 513) And (m.Msg <= 515)) Then
         Console.WriteLine("Processing the messages : " & m.Msg)
         Return True
      End If
      Return False
   End Function
End Class


[C#] 
// Creates a  message filter.
 public class TestMessageFilter : IMessageFilter {
    public bool PreFilterMessage(ref Message m) {
       // Blocks all the messages relating to the left mouse button.
       if (m.Msg >= 513 && m.Msg <= 515) {
          Console.WriteLine("Processing the messages : " + m.Msg);
          return true;
       }
       return false;
    }
  }


[C++] 
// Creates a  message filter.
public:
__gc class TestMessageFilter : public IMessageFilter {
public:
   bool PreFilterMessage(Message* m) {
      // Blocks all the messages relating to the left mouse button.
      if (m->Msg >= 513 && m->Msg <= 515) {
         Console::WriteLine(S"Processing the messages : {0}", __box(m->Msg));
         return true;
      }
      return false;
   }
};

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

Application クラス | Application メンバ | System.Windows.Forms 名前空間