承载支持 API 的本机 WPF 浏览器

在 WPF 宿主之外注册的活动文档服务器(也称为 DocObject)可使在 Web 浏览器中承载 WPF 应用程序更容易。 Internet Explorer 可以直接激活活动文档并与之集成。 为了在 Mozilla 浏览器中承载 XBAP 和宽松 XAML 文档,WPF 提供了一个 NPAPI 插件,该插件可提供一个类似于 WPF 活动文档服务器的承载环境,如同 Internet Explorer 所做的那样。 不过,要在其他浏览器和独立应用程序中承载 XBAP 和 XAML 文档,最简单实用的方法就是通过 Internet Explorer Web 浏览器控件来实现。 Web 浏览器控件可提供复杂的活动文档服务器承载环境,并且还允许其自身的宿主自定义和扩展该环境以及直接与当前的活动文档对象通信。

WPF 活动文档服务器实现若干常用承载接口,包括 IOleObjectIOleDocumentIOleInPlaceActiveObjectIPersistMonikerIOleCommandTarget。 在 Web 浏览器控件中承载这些接口时,可以从由 IWebBrowser2::Document 属性返回的对象中查询这些接口。

IOleCommandTarget

IOleCommandTarget 的 WPF 活动文档服务器实现支持标准 OLE 命令组(命令组 GUID 为 null)中众多与导航相关的命令和浏览器特定命令。 此外,它还能识别称为 CGID_PresentationHost 的自定义命令组。 此组中当前只定义了一个命令。

DEFINE_GUID(CGID_PresentationHost, 0xd0288c55, 0xd6, 0x4f5e, 0xa8, 0x51, 0x79, 0xde, 0xc5, 0x1b, 0x10, 0xec);
enum PresentationHostCommands { 
   PHCMDID_TABINTO = 1 
};

PHCMDID_TABINTO 让 PresentationHost 将焦点切换到其内容中第一个或最后一个可获得焦点的元素,具体取决于 Shift 键的状态。

本节内容