如何集中监视发送到应用程序或winform的消息

时间:2010-11-19 14:35:42

标签: c# winforms message-queue message

如何从应用程序中的一个中心位置捕获所有窗口的消息(winforms)。我需要在我的应用程序中有一个中心位置(例如programm.cs或Mainform),它可以对每个创建或每个显示(WM_FORMSHOW 0x18)表单做出反应。表单由其他开发人员AddIns共同分发,但它们在默认的appdomain中激活。尽管在另一个应用程序域中激活也是一个有趣的案例。

环境是.Net 3.5或4和c#。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以通过创建IMessageFilter并通过Application.AddMessageFilter将其添加到应用程序来捕获Windows消息。

IMessageFilter实现类中,您实现了PreFilterMessage,您可以在其中查找所需内容 - 传递包含相同数据的Message C样式的Windows消息循环会得到。请注意,如果您愿意,也可以将IMessageFilter添加到特定表单,就像整个应用程序消息循环一样。

相关问题