1

と を使用して、アプリ コントロールのクリック イベントをキャッチしようとしましIMessageFilterPreFilterMessage。しかし、コントロールからのイベントではなく、マウスのクリックをキャッチすることしかできません。

私のアプリケーションでは、コントロールの名前とタイプをログに記録するために、コントロールからのメッセージが必要です。

次のコードを使用して、マウス イベントをキャッチしましたif (m.Msg >= 513 && m.Msg <= 515)

public class TestMessageFilter : IMessageFilter
{
    public bool PreFilterMessage(ref Message m)
    {
        // Filter click events with a message number ?
        if (m.Msg == ?)
        {
            // Log stuff
        }
        return false;
    }
}

IMessageFilter または別のフィルターで Click イベントをキャッチする方法はありますか?

4

1 に答える 1

2

いいえ(一言で言えば)。MessageFilter は缶に記載されているもので、システム ウィンドウ メッセージをフィルタリングします。マネージ コードとはまったく関係がなく、Windows メッセージをリッスンしてフィルタリングしています。

ただし、キャッチされたら、メッセージに反応して、好きなことを行うことができます。つまり、必要なマネージド コードを呼び出したり、キーやマウスの位置を追跡したりします。この場合、マウスの位置を特定し、クリックが終了したかどうかを確認する必要があります。コントロールを作成し、クリック イベントを手動で呼び出します。

于 2012-06-04T15:11:14.510 に答える