Я не могу понять, как использовать элемент управления WebBrowser, не создавая окна на панели задач.Как создать элемент управления WebBrowser (ActiveX/IWebBrowser2) без пользовательского интерфейса?
Я использую элемент управления IWebBrowser2 ActiveX напрямую, потому что мне нужно использовать некоторые из дополнительных функций, таких как блокировка загрузки JAVA/ActiveX/изображений и т. Д. Это, по-видимому, недоступно в оболочках WPF или winforms WebBrowser (но эти обертки имеют способность создать управление без UI)
Вот мой код для создания элемента управления:
Type webbrowsertype = Type.GetTypeFromCLSID(Iid_Clsids.CLSID_WebBrowser, true);
m_WBWebBrowser2 = (IWebBrowser2)System.Activator.CreateInstance(webbrowsertype);
m_WBWebBrowser2.Visible = false;
m_WBOleObject = (IOleObject)m_WBWebBrowser2;
int iret = m_WBOleObject.SetClientSite(this);
iret = m_WBOleObject.SetHostNames("me", string.Empty);
tagRECT rect = new tagRECT(0, 0, 0, 0);
tagMSG nullMsg = new tagMSG();
m_WBOleInPlaceObject = (IOleInPlaceObject)m_WBWebBrowser2;
//INPLACEACTIVATE the WB
iret = m_WBOleObject.DoVerb((int)OLEDOVERB.OLEIVERB_INPLACEACTIVATE,
ref nullMsg, this, 0, IntPtr.Zero, ref rect);
IConnectionPointContainer cpCont = (IConnectionPointContainer)m_WBWebBrowser2;
Guid guid = typeof(DWebBrowserEvents2).GUID;
IConnectionPoint m_WBConnectionPoint = null;
cpCont.FindConnectionPoint(ref guid, out m_WBConnectionPoint);
m_WBConnectionPoint.Advise(this, out m_dwCookie);
Этот код работает отлично, но он показывает окно в панели задач. Если я опускаю вызов DoVerb (OLEDOVERB.OLEIVERB_INPLACEACTIVATE), то переход на веб-страницу не работает должным образом. Navigate() не будет загружать все на странице и никогда не запускает событие DocumentComplete. Если я добавлю DoVerb (OLEIVERB_HIDE), то получаю такое же поведение, как если бы я пропустил вызов DoVerb (OLEDOVERB.OLEIVERB_INPLACEACTIVATE).
Это похоже на довольно простой вопрос, но я нигде не мог найти примеров.