Невозможно создать несколько экземпляров PowerPoint

Я работаю над проектом, где мне нужно использовать PowerPoint из C#.net. Первоначально я всегда создавал один единственный экземпляр. На сегодняшний день я хотел бы запустить несколько экземпляров. Я делаю это так:

Type powerpointType = Type.GetTypeFromProgID("PowerPoint.Application");

object instance1 = Activator.CreateInstance(powerpointType);
object instance2 = Activator.CreateInstance(powerpointType);

но когда я прошу дескриптор обоих экземпляров, позвонив

hwnd = (int)powerpointType.GetProperty("HWND").GetValue(instance1, null);

тогда я получаю одну и ту же ручку дважды. Мой вывод заключается в том, что приложение запускается только один раз, и TaskManager подтверждает, что: только один процесс.

Почему работает только один экземпляр PowerPoint, и как я могу заставить его работать?

5 ответов

Решение

Вместо нескольких экземпляров, почему бы не сослаться на несколько открытых презентаций в одном экземпляре?

Когда пользователь "Выходит из колонки", вы можете просто закрыть эту одну презентацию, но оставить PPT открытым, если это не последняя открытая презентация.

Эта ссылка обсуждает, как использовать новую учетную запись пользователя для создания нескольких экземпляров PowerPoint. Он отлично работает, если вы всегда запускаете его с одного и того же компьютера, но его не так просто распространять.

PowerPoint и Word используют один и тот же экземпляр. Excel, с другой стороны, позволяет иметь несколько экземпляров. Чтобы запустить два экземпляра, вам нужно запустить другой экземпляр как другой пользователь.

Зачем вам нужно несколько экземпляров? Для того, чтобы показать две презентации на двух мониторах?

Исходя из вашего комментария к Микаэлю, есть другое решение. Это VBA, но легко переносимый на C#. Просто откройте презентацию (скрытую) и экспортируйте каждый слайд в формате PNG. Затем вы можете отобразить эти PNG в вашем столбце.

Dim ap As Presentation
Set ap = Presentations.Open(FileName:="yourppt.pptx", WithWindow:=msoFalse)
Dim s As Slide
For Each s In ap.Slides
    s.Export s.Name, "PNG"
Next

Затем, когда кто-то что-то щелкает, первый может закрыться, и ваш новый PPT может показать.

Для пользователей 2007 года сохранить ppt(x) в формате PDF

По крайней мере, PDF можно открыть как отдельные экземпляры

Вы можете сохранить обратно как.doc (моя версия Acrobat Pro - 9.5.2);.doc - это нормально, но не идеально, но по крайней мере я могу вырезать и вставлять между.doc и.ppt(x):-)

Кстати, Word 2007 открывает каждый документ как отдельный экземпляр, по крайней мере, в моей установке, установка выполняется нашими ИТ-специалистами.

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