没有Windows窗体的AddMessageFilter?

我想使用System.Windows.Forms.Application.AddMessageFilter的function,但我的目标应用程序不使用Windows窗体。 此function添加一个筛选器来监视Windows消息路由。 如果有人知道这是如何工作的,我不介意写我自己的代码来执行相同的function。

带有GWL_WNDPROC的SetWindowLong只影响收到的消息,我想影响发送的消息。 System.Windows.Forms.Application是静态的,但用引发exception的IMessageFilter调用AddMessageFilter不起作用。

你可以使用消息钩来实现你想要的。 实际上,消息钩子比IMessageFilter功能强大得多,因为除了发送给窗口句柄的窗口消息之外,还有其他类型的钩子。 例如,您可以挂钩系统范围的按键或鼠标移动。

有关更多信息,请参阅此文章

http://msdn.microsoft.com/en-us/magazine/cc188966.aspx