Windows Vista 和 Office: 使用托管预览处理程序框架以自己的方式查看数据
2009-02-09 17:43:48 来源:WEB开发网Windows Vista 中也存在同样的版本问题,因此 Microsoft 仍然建议不应当在托管代码中实现外壳加载项,即使是对于外壳程序中的新的扩展点,例如,缩略图提供程序和属性处理程序(Windows Vista 搜索索引器将在进程外使用这些处理程序,但 Windows Vista 外壳程序将在进程内使用它们)。
但也有关于预览处理程序的好消息:至少在涉及到外壳程序之前,预览处理程序始终会在进程外加载。预览处理程序是作为 COM 组件实现的,但它们不会被 Windows Vista 外壳程序承载。实际上,预览处理程序要么由预览处理程序代理主机 (prevhost.exe) 来承载,要么作为本地 COM 服务器来实现。对于托管代码,后者的如何实现超出了本文的讨论范围(相关内容的概述,请参见边栏上由 Ryan Gregg 撰写的“预览处理程序和 Windows XP”)。此外,使用 prevhost.exe 是首选的 Microsoft 推荐服务模型。
PreviewHandler 框架
若要成为有效的预览处理程序,必须实现几个接口。其中包括 IPreviewHandler (shobjidl.h);IInitializeWithFile、IInitializeWithStream 或 IInitializeWithItem (propsys.h);IObjectWithSite (ocidl.h);以及 IOleWindow (oleidl.h)。还有可选接口,例如 IPreviewHandlerVisuals (shobjidl.h),使预览处理程序得以实现以提供扩展支持。
如果要用本机代码编写预览处理程序,假如这些接口全都已经定义,并且可以包括在我刚才提及的头文件中,那么您可以直接深入您的工作。但是,若要用托管代码编写预览处理程序,则必须首先编写或获得所有这些接口的 COM Interop 定义。图 2 列出了我的定义。
Figure2COM 接口互操作
更多精彩
赞助商链接