如果我通过自动化创建 PowerPoint 应用程序,则当用户关闭主窗口时,该过程仍保留在任务管理器中。我可以假设这是因为我的应用程序持有对 PowerPoint 应用程序的引用,因此它不能被垃圾收集。但是我怎么知道用户关闭了 PowerPoint 应用程序以便我可以释放对它的所有引用呢?这里似乎是鸡或蛋的问题。以下是我在表单加载时调用的函数。如果 PowerPoint 已打开,则它使用当前实例。如果没有,它会创建一个新实例。
Private Function TryAttachToApplication() As PowerPoint.Application
Dim app As PowerPoint.Application
Try
app = CType(Marshal.GetActiveObject("PowerPoint.Application"), PowerPoint.Application)
Catch ex As COMException
app = New PowerPoint.Application
End Try
app.Visible = True
Return app
End Function