[英]Closing a powerpoint presentation
我創建了一些Office加載項,用於跟蹤文檔/演示文稿是否已關閉,然后在關閉文檔/演示文稿之前執行一些自定義代碼。
所有這些代碼都可以在Word加載項中正常運行,但是在PowerPoint加載項中
“ System.Runtime.InteropServices.COMException(0x80048240):表示(未知成員):無效的請求。無法在此事件處理程序中執行此操作。”-關閉PowerPoint應用程序時出錯。 被調用的方法是presentation.Close()。
如果該方法作為功能區事件處理程序的一部分被調用,則該方法工作正常,但是如果由任何Application-evens( 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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.