WPF のブラウザーのホスト処理をサポートするネイティブ API
Web ブラウザーでの WPF アプリケーションのホストは、WPF ホストの外部に登録された Active ドキュメント サーバー (DocObject とも呼ばれます) によって実現されます。 Internet Explorer は、アクティブ ドキュメントを直接アクティブ化して統合することができます。 Mozilla ブラウザーで XBAP および Loose XAML ドキュメントをホストするために、WPF は NPAPI プラグインを提供します。このプラグインは、Internet Explorer で提供されるのと似たホスト環境を WPF Active ドキュメント サーバーに提供します。 しかし、他のブラウザーおよびスタンドアロン アプリケーションで XBAP および XAML ドキュメントをホストする最も簡単で実際的な方法は、Internet Explorer の Web ブラウザー コントロールを使用することです。 Web ブラウザー コントロールは、複雑な Active ドキュメント サーバー ホスト環境を提供するだけでなく、自身のホストがその環境をカスタマイズおよび拡張し、現在の Active ドキュメント オブジェクトと直接通信できるようにします。
WPF Active ドキュメント サーバーは、IOleObject、IOleDocument、IOleInPlaceActiveObject、IPersistMoniker、IOleCommandTarget などの共通ホスト インターフェイスを実装します。 Web ブラウザー コントロールでホストされた場合、これらのインターフェイスは、IWebBrowser2::Document プロパティで返されるオブジェクトからクエリできます。
IOleCommandTarget
WPF Active ドキュメント サーバーの IOleCommandTarget の実装は、標準 OLE コマンド グループ (コマンド グループ GUID は null) のさまざまなナビゲーション関連コマンドおよびブラウザー固有のコマンドをサポートします。 また、CGID_PresentationHost という名前のカスタム コマンド グループも認識します。 現在、このグループ内で定義されているコマンドは 1 つだけです。
DEFINE_GUID(CGID_PresentationHost, 0xd0288c55, 0xd6, 0x4f5e, 0xa8, 0x51, 0x79, 0xde, 0xc5, 0x1b, 0x10, 0xec);
enum PresentationHostCommands {
PHCMDID_TABINTO = 1
};
PHCMDID_TABINTO は、Shift キーの状態に基づいてコンテンツ内の最初または最後のフォーカス可能な要素にフォーカスを切り替えるように、PresentationHost に指示します。