我正在开发一个需要使用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运行实例,我怎样才能让它运行?
答案 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人员完成的。