WebBrowser コントロール クライアントがグローバル設定を共有する
警告
廃止され、サポート対象外となった Internet Explorer 11 デスクトップ アプリケーションは、特定のバージョンの Windows 10 で Microsoft Edge の更新プログラムを通じて完全に無効になります。 詳細については、「Internet Explorer 11 デスクトップ アプリの廃止に関する FAQ」をご覧ください。
この記事では、CWnd ベースのホスティング クラスの OnAmbientProperty メソッドをオーバーライドすることで、WebBrowser コントロール クライアントを共有するためのグローバル設定を実装する方法について説明します。
元の製品バージョン:インターネット エクスプローラー
元の KB 番号: 183412
現象
WebBrowser コントロールのすべてのホストは、同じグローバル インターネット設定を共有します。
解決方法
ほとんどのグローバル インターネット設定では、WebBrowser ホストごとに一連のプロパティを自動的に保存する方法はサポートされていません。
ただし、ActiveX コントロールをダウンロードするかどうかなど、特定のダウンロード オプションは、ホストごとにオーバーライドおよび指定できます。
状態
この動作は仕様です。
詳細
Internet Client SDK (InetSDK) に記載されているように、WebBrowser ホストは既定のディスパッチ インターフェイスに DISPID_AMBIENT_DLCONTROL アンビエント プロパティを実装して、ダウンロード オプションのグローバル設定をオーバーライドできます。
InetSDK (\InetSDK\Samples\Walkall) の WALKALL サンプルは、MSHTML ホストのこの手法を示しています。 WebBrowser ホストでも同様の方法を使用して、同じ効果を実現できます。
MSHTML は、クリックされたハイパーリンクに移動するときに 、DISPID_AMBIENT_USERAGENT を介して新しいユーザー エージェントを要求します。 このアンビエント プロパティはオーバーライドできますが、プログラムによって Navigate メソッドを呼び出すときには使用されません。 また、DOM のuserAgent
ナビゲーター オブジェクトまたは clientInformation 動作のプロパティも変更されません。このプロパティは、常にインターネット エクスプローラー独自の UserAgent 文字列を反映します。
WebBrowser コントロールの MFC ホストは、CWnd ベースのクラスをホストする OnAmbientProperty メソッドをオーバーライドすることで、これらのアンビエント プロパティに簡単に影響を与えることができます。
BOOL CWBHostView::OnAmbientProperty(COleControlSite* pSite,
DISPID dispid, VARIANT* pvar)
{
USES_CONVERSION;
// Change download properties - no java, no scripts...
if (dispid == DISPID_AMBIENT_DLCONTROL)
{
pvar->vt = VT_I4;
pvar->lVal = DLCTL_NO_SCRIPTS | DLCTL_NO_JAVA
| DLCTL_NO_RUNACTIVEXCTLS | DLCTL_NO_DLACTIVEXCTLS;
return TRUE;
}
// Change user agent for this web browser host during hyperlinks
if (dispid == DISPID_AMBIENT_USERAGENT)
{
CString strUserAgent("MyWebBrowserHost");
pvar->vt = VT_BSTR;
pvar->bstrVal = ::SysAllocString(T2OLE(strUserAgent));
return TRUE;
}
return CView::OnAmbientProperty(pSite, dispid, pvar);
}
DISPID_AMBIENT_* と DLCTL_* の値は、(\InetSDK\Include\MSHTMDID) でMshtmdid.h
定義されます。H).
関連情報
Microsoft Internet エクスプローラー 向けの Web ベースのソリューションの開発の詳細については、「インターネット エクスプローラー モードと DevTools」を参照してください。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示