5

学校のプロジェクトでは、単語インスタンスを開始し、ドキュメントが閉じられたかどうかを追跡する方法が必要です。WordのCOMAPIにはこのためのイベントがありませんが、これを行う他の方法はありますか?

現在、wordのCOM apiを使用していますが、それ以外はすべて問題ありません。C#でプログラミングしています。

4

2 に答える 2

2

winword プロセスを使用して、特定のファイルで実行されているプロセスが終了しているかどうかを確認します。

新しく開始されたインスタンスのプロセスがわからない場合は、これを使用するか、単にプロセスの終了イベントをフックします。

すべてのワード プロセスを取得する

var info = Process.GetProcessesByName("winword").FirstOrDefault();

を使用して特定のファイルのプロセスを識別します Process.MainWindowTitle

プロセスのフック終了イベントProcess.Exited

于 2011-02-10T12:55:17.637 に答える
2

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 でいくつかの処理が行われています。

  1. ドキュメントが保存されているかどうかを確認します。そうでない場合 ==> どこに保存するか聞いて、自分でやってください。
  2. 自分でドキュメントを閉じる
  3. ワードを閉じる

これらの処理が完了したら、自分の作業を行うことができます。ロックを解除する必要があります。

于 2011-02-09T19:27:31.250 に答える