Как обнаружить форму, открытую внутри приложения
Можно ли определить, когда форма открывается внутри моего приложения?
У меня есть сборка, которая используется и инициализируется несколькими приложениями. Мне нужно использовать эту сборку, чтобы определить, когда форма внутри моего приложения открывается, чтобы иметь возможность ее изменить.
Единственное решение, которое я нашел, - это использование 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, но я все еще не нашел его фактического значения.
Первым намерением было бы выбрать лучший дизайн, но мне не позволено.