C# 关闭powerpoint演示文稿
我创建了一些Office外接程序,在其中跟踪文档/演示文稿是否已关闭,然后在关闭文档/演示文稿之前执行一些自定义代码 所有这些代码在Word加载项中都可以正常工作,但在PowerPoint加载项中我得到了一个 “System.Runtime.InteropServices.COMException(0x80048240): 演示文稿(未知成员):请求无效。此操作无效 无法在此事件处理程序中执行。“-关闭 PowerPoint应用程序关闭。正在调用的方法是 presentation.Close() 如果该方法作为Ribbon eventhandler的一部分调用,则该方法可以正常工作,但如果它被任何应用程序调用(C# 关闭powerpoint演示文稿,c#,office-interop,powerpoint-2010,C#,Office Interop,Powerpoint 2010,我创建了一些Office外接程序,在其中跟踪文档/演示文稿是否已关闭,然后在关闭文档/演示文稿之前执行一些自定义代码 所有这些代码在Word加载项中都可以正常工作,但在PowerPoint加载项中我得到了一个 “System.Runtime.InteropServices.COMException(0x80048240): 演示文稿(未知成员):请求无效。此操作无效 无法在此事件处理程序中执行。“-关闭 PowerPoint应用程序关闭。正在调用的方法是 presentation.Close()
PresentationClose
、PresentationBeforeClose
或PresentationCloseFinal
),则该方法无法执行presentation.Close()
)
如前所述,我在Word加载项中有相同的代码,但没有此问题。我知道这两种产品中的事件处理是不同的,但我仍然不明白为什么在PowerPoint中关闭应用程序或演示文稿时会出现问题
希望有人能提供一些好的意见。我遇到了一些非常相似的东西;为了绕过PPT中的一些错误或其他错误,我需要关闭然后重新打开当前演示文稿,但无法从事件处理程序中关闭演示文稿(我认为这是有意义的,因为它仍在处理属于触发它的演示文稿的事件) 我通过让事件处理程序无模式地加载表单来解决这个问题。这允许事件处理程序中的代码继续到事件处理程序的End Sub,因此您不再在事件处理程序中 表单中的初始化代码随后关闭当前文档并卸载表单
无需显示表单,因此用户从未看到过这些内容。我尝试了很多方法,但都没有效果。 因此,最好搜索powerpoint流程并通过代码终止它。 希望这就是你想要的
Process[] pros = Process.GetProcesses();
for (int i = 0; i < pros.Count(); i++)
{
if (pros[i].ProcessName.ToLower().Contains("powerpnt"))
{
pros[i].Kill();
}
}
Process[]pros=Process.getprocesss();
for(int i=0;i
您找到解决此问题的方法了吗?