次の方法で共有


Application.AddMessageFilter(IMessageFilter) メソッド

定義

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

public:
 static void AddMessageFilter(System::Windows::Forms::IMessageFilter ^ value);
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 インターフェイスの実装。

次のコード例では、 というメッセージ TestMessageFilterフィルターを作成します。 このフィルターは、マウスの左ボタンに関連するすべてのメッセージをブロックします。 メッセージ フィルターを使用する前に、 インターフェイスの実装を指定する IMessageFilter 必要があります。

// 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.
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

注釈

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

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

注意事項

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

適用対象