1

我试图用 和 来捕捉我的应用程序控件上的点击IMessageFilter事件PreFilterMessage。但我只实现了捕捉鼠标点击,而不是来自控件的事件。

在我的应用程序中,我需要来自控件的消息来记录控件的名称和类型。

我使用以下代码来捕获鼠标事件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 回答