这在 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 位办公室,基本的想法是:
- 对于 2013 年,设置
[SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Common\COM Compatibility\{8856F961-340A-11D0-A96B-00C04FD705A2}]"Compatability Flags"=dword:00000000
- 对于 2016 年,设置
[SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Common\COM Compatibility\{8856F961-340A-11D0-A96B-00C04FD705A2}]"Compatability Flags"=dword:00000000
- 设置
[SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION]"POWERPNT.EXE"=dword:00002711
(或更高版本 - IE10 的代码,还有 00002AF8 和 00002AF9 代码为 IE11,具有不同的严格级别)。
显然,MS 禁用此功能是有原因的,因此取决于您对安全性的关心程度以及重新启用此功能的危险程度。
在个人层面上,从一个 VSTO 开发人员到另一个,我为你感到非常抱歉:D