タスクバーにウィンドウを作成せずに WebBrowser コントロールを使用する方法がわかりません。
JAVA/ActiveX/画像などのダウンロードをブロックするなどの高度な機能を使用する必要があるため、IWebBrowser2 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) 呼び出しを省略すると、Web ページへの移動が正しく機能しません。Navigate() はページ上のすべてをダウンロードするわけではなく、DocumentComplete イベントを発生させません。DoVerb(OLEIVERB_HIDE) を追加すると、DoVerb(OLEDOVERB.OLEIVERB_INPLACEACTIVATE) 呼び出しを省略した場合と同じ動作になります。
これはかなり基本的な質問のようですが、どこにも例が見つかりませんでした。