0

我正在为 PowerPoint 开发 VSTO 插件。AddIn 的功能之一是在幻灯片上添加生活网页。

在以前版本的 PPT 中,我可以简单地做:

var browserShape = slide.Shapes.AddOLEObject(
        x, y, width, height,
        "Shell.Explorer.2"
    ) as PowerPoint.Shape;

但现在使用 PowerPoint 2016 我得到了一个 OLE 异常。

有没有一种新的(甚至更好的)方法可以将工作网页放在幻灯片上?发生了什么变化?为什么旧方法不再起作用?

那么如何在 PowerPoint 2016中将生活网页添加到幻灯片中呢?请注意,我没有办法强迫我的客户安装其他插件。

提前致谢。

4

1 回答 1

0

这在 2013 年有效,但现在在 2016 年失败了吗?我问是因为 MS 从 2010 年到 2013 年做出了相当大的变化,这会导致这种情况,但据我所知,从那时起并没有真正的~额外~相关的变化。

我维护我编写的一个产品,该产品使用动态生成的 PowerPoint 演示文稿,其中包括(除其他外)实时网页(使用我编写的启用实时网页功能的 VSTO 插件)。

这是我用来将 Web 浏览器对象插入幻灯片的代码:

slide.Shapes.AddOLEObject(0, 0, presentation.PageSetup.SlideWidth, presentation.PageSetup.SlideHeight, "Shell.Explorer.2");

这和你的基本一样。

不同之处可能是http://support.microsoft.com/kb/2793374出于安全原因,MS 决定禁用 Web 浏览器控件,我的系统尝试重新启用写入相关注册表项,然后更进一步使用http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation将浏览器仿真更新到更新版本的 IE(我认为它默认为 7 或 9 或一些东西 - 我将它更新到 IE11,因此它支持 HTML5 和一堆其他旧 IE 浏览器非常糟糕的东西)。

这取决于你如何做——你可以手动让你的客户运行一个 .reg 文件来修补机器一次,或者你可以尝试在应用程序本身内部进行它(我的建议:由于特权,这是很多工作需要提升才能写入这些注册表项)。

假设 32 位办公室,基本的想法是:

  1. 对于 2013 年,设置[SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Common\COM Compatibility\{8856F961-340A-11D0-A96B-00C04FD705A2}]"Compatability Flags"=dword:00000000
  2. 对于 2016 年,设置[SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Common\COM Compatibility\{8856F961-340A-11D0-A96B-00C04FD705A2}]"Compatability Flags"=dword:00000000
  3. 设置[SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION]"POWERPNT.EXE"=dword:00002711(或更高版本 - IE10 的代码,还有 00002AF8 和 00002AF9 代码为 IE11,具有不同的严格级别)。

显然,MS 禁用此功能是有原因的,因此取决于您对安全性的关心程度以及重新启用此功能的危险程度。

在个人层面上,从一个 VSTO 开发人员到另一个,我为你感到非常抱歉:D

于 2017-06-20T07:52:47.380 回答