2016-10-26 11 views
0

Microsoft Wordの相互運用機能は、ユーザーが閉じるときを検出するためにQuitイベントを提供しています:(オフィス相互運用機能)

var word = new Microsoft.Office.Interop.Word.Application(); 
var events = (Microsoft.Office.Interop.Word.ApplicationEvents4_Event)word; 
events.Quit += Word_Quit; 

は、Microsoft Excelのための同様のものがありますか?私は、同様のインタフェースを発見したが、残念ながら何のQuitイベントはありません。

var excel = new Microsoft.Office.Interop.Excel.Application(); 
var events = (Microsoft.Office.Interop.Excel.AppEvents_Event)excel; 

答えて

0

それはハックですが、それは私の目的のために動作します。 Excel/Wordドキュメントへの参照を保持し、定期的に単純なプロパティにアクセスしてみてください。失敗した場合、文書は閉鎖されている可能性が最も高いです。

try 
{ 
    if (this.workbook != null) 
    { 
     var count = this.workbook.Worksheets.Count; 
    } 
    else 
    { 
     var count = this.wordDocument.Content.StoryLength; 
    } 
} 
catch 
{ 
    // Office has been closed 
} 
+0

特定のファイルが開いているかどうかを確認します。あなたはそれを追跡するために[WorkbookBeforeClose](https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.appevents_event.workbookbeforeclose.aspx)を使うことができます。しかし、ドキュメントを閉じることは、アプリケーションを閉じることを意味しません。 – BrakNicku

+0

@BrakNicku WorkbookBeforeCloseは、ユーザーがドキュメントを保存する前に起動します。したがって、文書が閉じられた正確な時点はありません。 – cheeesus

+0

イベントハンドラでは、標準の保存ダイアログ( 'DisplayAlerts = false')を非表示にして、独自に表示することができます。この方法でドキュメントを閉じる瞬間を知ることができますが、主な問題はドキュメントを閉じることです>その質問には答えません。 – BrakNicku

関連する問題