学校のプロジェクトでは、単語インスタンスを開始し、ドキュメントが閉じられたかどうかを追跡する方法が必要です。WordのCOMAPIにはこのためのイベントがありませんが、これを行う他の方法はありますか?
現在、wordのCOM apiを使用していますが、それ以外はすべて問題ありません。C#でプログラミングしています。
学校のプロジェクトでは、単語インスタンスを開始し、ドキュメントが閉じられたかどうかを追跡する方法が必要です。WordのCOMAPIにはこのためのイベントがありませんが、これを行う他の方法はありますか?
現在、wordのCOM apiを使用していますが、それ以外はすべて問題ありません。C#でプログラミングしています。
winword プロセスを使用して、特定のファイルで実行されているプロセスが終了しているかどうかを確認します。
新しく開始されたインスタンスのプロセスがわからない場合は、これを使用するか、単にプロセスの終了イベントをフックします。
すべてのワード プロセスを取得する
var info = Process.GetProcessesByName("winword").FirstOrDefault();
を使用して特定のファイルのプロセスを識別します Process.MainWindowTitle
プロセスのフック終了イベントProcess.Exited
Microsoft.Office.Interop.Word ライブラリを使用している場合は、サブスクライブできるイベントがあります。
Microsoft.Office.Interop.Word.Application wordApp =
new Microsoft.Office.Interop.Word.Application();
wordApp.DocumentBeforeClose +=
new ApplicationEvents4_DocumentBeforeCloseEventHandler(
wordApp_DocumentBeforeClose);
...
private void wordApp_DocumentBeforeClose(Document Doc, ref bool Cancel)
{
// Do your thing
}
編集:
ファイルロックを処理するには ==>この投稿をご覧ください。ご覧のとおり、DocumentBeforeClose でいくつかの処理が行われています。
これらの処理が完了したら、自分の作業を行うことができます。ロックを解除する必要があります。