如何从应用程序中的一个中心位置捕获所有窗口的消息(winforms)。我需要在我的应用程序中有一个中心位置(例如programm.cs或Mainform),它可以对每个创建或每个显示(WM_FORMSHOW 0x18)表单做出反应。表单由其他开发人员AddIns共同分发,但它们在默认的appdomain中激活。尽管在另一个应用程序域中激活也是一个有趣的案例。
环境是.Net 3.5或4和c#。
谢谢
答案 0 :(得分:1)
您可以通过创建IMessageFilter
并通过Application.AddMessageFilter
将其添加到应用程序来捕获Windows消息。
在IMessageFilter
实现类中,您实现了PreFilterMessage
,您可以在其中查找所需内容 - 传递包含相同数据的Message
C样式的Windows消息循环会得到。请注意,如果您愿意,也可以将IMessageFilter
添加到特定表单,就像整个应用程序消息循环一样。