无法创建PowerPoint的多个实例

时间:2010-03-06 17:42:32

标签: c# powerpoint

我正在开发一个需要使用C#.net的PowerPoint的项目。最初,我总是创建一个单独的实例。截至今天,我想要运行多个实例。我这样做是这样的:

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 个答案:

答案 0 :(得分:4)

为什么不在单个实例中引用多个打开的演示文稿而不是多个实例?

当用户“退出列”时,您可以关闭该一个演示文稿,但保持PPT打开,除非它是最后一个打开的演示文稿。

答案 1 :(得分:4)

This link讨论了如何使用新用户帐户创建PowerPoint的多个实例。如果你总是在同一台计算机上运行它,它可以正常工作,但不是特别容易分发。

答案 2 :(得分:2)

PowerPoint和Word共享同一个实例。另一方面,Excel允许您拥有多个实例。为了运行两个实例,您需要以另一个用户的身份启动另一个实例。

为什么需要多个实例?为了在两台显示器上显示两个演示文稿?

答案 3 :(得分:1)

根据您对Mikael的评论,还有另一种解决方案。这是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可以显示。

答案 4 :(得分:-1)

2007年,用户将ppt(x)保存为pdf

至少pdf可以作为单独的实例打开

您可以保存为.doc(我的Acrobat Pro版本是9.5.2); .doc可以但不完美,但至少我可以在.doc和.ppt(x)之间剪切和粘贴:-)

BTW - Word 2007确实将每个文档打开为一个单独的实例,至少在我的安装中,安装是由我们的IT人员完成的。