Как создать элемент управления WebBrowser (ActiveX / IWebBrowser2) без пользовательского интерфейса? - PullRequest
1 голос
/ 13 июня 2010

Я не могу понять, как использовать элемент управления 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).

Это кажется довольно простым вопросом, но я нигде не смог найти никаких примеров.

1 Ответ

0 голосов
/ 13 июня 2010
...