Я не могу понять, как использовать элемент управления WebBrowser, не заставив его создать окно на панели задач.
Я использую элемент управления ActiveX IWebBrowser2 напрямую, потому что мне нужно использовать некоторые из расширенных функций, таких как блокировка загрузкиJAVA / ActiveX / images и т. Д. Это, по-видимому, недоступно в оболочках WPF или winforms WebBrowser (но у этих оболочек есть возможность создавать элемент управления без пользовательского интерфейса)
Вот мой код для создания элемента управления:
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).
Это кажется довольно простым вопросом, но я нигде не смог найти никаких примеров.