Добавление веб-браузера на слайд в PowerPoint 2016 с помощью надстройки VSTO
Я работаю над VSTO AddIn для PowerPoint. Одной из функций AddIn является добавление живых веб-страниц на слайды.
В предыдущих версиях PPT я мог просто сделать:
var browserShape = slide.Shapes.AddOLEObject(
x, y, width, height,
"Shell.Explorer.2"
) as PowerPoint.Shape;
Но теперь с PowerPoint 2016 я получаю исключение OLE.
Есть ли новый (может быть, даже лучше) способ размещения рабочих веб-страниц на слайдах? Что изменилось? Почему старый способ больше не работает?
Итак, как мне добавить жизненные веб-страницы к слайдам в PowerPoint 2016? Обратите внимание, что у меня нет способа заставить своих клиентов установить какой-либо другой плагин.
Заранее спасибо.
1 ответ
Работало ли это в 2013 году, а теперь не работает в 2016 году? Я спрашиваю, потому что MS внесла довольно большие изменения с 2010 по 2013 год, что могло бы стать причиной этого, но, насколько я знаю, с тех пор не было каких-либо дополнительных значимых изменений.
Я поддерживаю продукт, который я написал, который использует динамически генерируемые презентации PowerPoint, которые включают (среди прочего) живые веб-страницы (используя написанный мной плагин VSTO, который обеспечивает функциональность живых веб-страниц).
Вот код, который я использую для вставки объекта веб-браузера в слайд:
slide.Shapes.AddOLEObject(0, 0, presentation.PageSetup.SlideWidth, presentation.PageSetup.SlideHeight, "Shell.Explorer.2");
Это в основном так же, как у вас.
Разница, вероятно, в http://support.microsoft.com/kb/2793374 где MS решила отключить контроль веб-браузера по соображениям безопасности, и моя система пытается повторно включить запись соответствующих разделов реестра, а затем сделать еще один шаг вперед с помощью http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx, чтобы обновить эмуляцию браузера до более новой версии 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