Добавление веб-браузера на слайд в 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-битный офис, основная идея заключается в следующем:

  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

Другие вопросы по тегам