如何检测应用程序内部打开的表单

时间:2015-09-21 07:53:32

标签: .net winforms

是否可以检测表单何时在我的应用程序中打开?

我有一个由多个应用程序使用和初始化的程序集。当我的应用程序中的表单打开时,我需要使用此程序集来检测它是否能够修改它。

我找到的唯一解决方案是使用MessageFilter, 编辑:,如Most Efficient Way for getting notified on window open - 但他们要求所有进程中的窗口,我只想在自己的进程中获取窗口。由于我只对自己的应用程序/进程感兴趣,所以我希望找到一个唯一的.NET解决方案。

Application.AddMessageFilter(new MessageFilterImpl());

class MessageFilterImpl : IMessageFilter
{
    public bool PreFilterMessage(ref Message m)
    {
        Control wnd= Form.FromHandle(m.HWnd);
        if (wnd is Form)
            knownForms.Add((Form)wnd);

        return false;
    }
}

我发现收到的第一条消息是0xC052,但我仍然没有找到它的实际含义。

第一个意图是选择更好的设计,但我不允许。

0 个答案:

没有答案