Как обнаружить форму, открытую внутри приложения

Можно ли определить, когда форма открывается внутри моего приложения?

У меня есть сборка, которая используется и инициализируется несколькими приложениями. Мне нужно использовать эту сборку, чтобы определить, когда форма внутри моего приложения открывается, чтобы иметь возможность ее изменить.

Единственное решение, которое я нашел, - это использование MessageFilter,EDIT: как " Самый эффективный способ" для получения уведомлений об открытии окна - но они запрашивают окна во всех процессах, где я хочу получить окна только в своем собственном процессе. Поскольку меня интересует только мое собственное приложение / процесс, я надеюсь найти единственное решение.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 ответов

Другие вопросы по тегам