Application.AddMessageFilter(IMessageFilter) メソッド

定義

メッセージ フィルターを追加して、ルーティング先にルーティングされる Windows メッセージを監視します。Adds a message filter to monitor Windows messages as they are routed to their destinations.

public:
 static void AddMessageFilter(System::Windows::Forms::IMessageFilter ^ value);
public static void AddMessageFilter (System.Windows.Forms.IMessageFilter value);
static member AddMessageFilter : System.Windows.Forms.IMessageFilter -> unit
Public Shared Sub AddMessageFilter (value As IMessageFilter)

パラメーター

value
IMessageFilter

インストールする IMessageFilter インターフェイスの実装。The implementation of the IMessageFilter interface you want to install.

次のコード例では、TestMessageFilter という名前のメッセージフィルターを作成します。The following code example creates a message filter called TestMessageFilter. このフィルターは、マウスの左ボタンに関連するすべてのメッセージをブロックします。This filter blocks all messages relating to the left mouse button. メッセージフィルターを使用するには、IMessageFilter インターフェイスの実装を指定する必要があります。Before you can use a message filter, you must provide an implementation for the IMessageFilter interface.

// Creates a  message filter.
ref class TestMessageFilter: public IMessageFilter
{
public:
   [SecurityPermission(SecurityAction::LinkDemand, Flags = SecurityPermissionFlag::UnmanagedCode)]
   virtual bool PreFilterMessage( Message % m )
   {
      
      // Blocks all the messages relating to the left mouse button.
      if ( m.Msg >= 513 && m.Msg <= 515 )
      {
         Console::WriteLine( "Processing the messages : {0}", m.Msg );
         return true;
      }

      return false;
   }

};

// Creates a  message filter.
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
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;
    }
}

' Creates a message filter.
<SecurityPermission(SecurityAction.LinkDemand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
Public Class TestMessageFilter
    Implements IMessageFilter

    <SecurityPermission(SecurityAction.Demand)> _
    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

注釈

メッセージフィルターを使用して、特定のイベントが発生しないようにするか、イベントをイベントハンドラーに渡す前にイベントに対して特別な操作を実行します。Use a message filter to prevent specific events from being raised or to perform special operations for an event before it is passed to an event handler. メッセージフィルターは、特定のスレッドに対して一意です。Message filters are unique to a specific thread.

メッセージがディスパッチされないようにするには、このメソッドに渡す @no__t 0 パラメーターインスタンスが、メッセージを処理するコードで PreFilterMessage メソッドをオーバーライドする必要があります。To prevent a message from being dispatched, the value parameter instance that you pass to this method must override the PreFilterMessage method with the code to handle the message. メソッドは falseを返します。The method must return false.

注意事項

アプリケーションのメッセージポンプにメッセージフィルターを追加すると、パフォーマンスが低下する可能性があります。Adding message filters to the message pump for an application can degrade performance.

セキュリティ

SecurityPermission
直前の呼び出し元がアンマネージコードを呼び出す場合は。for the immediate caller to call unmanaged code. 関連付けられた列挙型: UnmanagedCodeAssociated enumeration: UnmanagedCode

適用対象