2011-02-09 60 views
5

我們需要爲我們的學校項目的方式來啓動一個詞實例,並跟蹤如果文件被關閉。來自word的COM api沒有這個事件,有沒有其他方法可以做到這一點?啓動Word和監控,如果文檔關閉

目前我們使用的是單詞中的COM API,但其他一切都可以。我們正在用C#編程。

+0

這會幫助Process.MainWindowTitle

掛鉤退出事件識別特定文件的過程? http://stackoverflow.com/questions/4329521/how-to-handle-word-close-event-from-winforms-application – Koen 2011-02-09 11:39:54

+1

我們試過這種過,但我們注意到,如果已經有一個字PROC我們的新PROC合併成跑步。我們還主持預覽,所以總是有一個文字處理過程。 – MBulli 2011-02-09 11:59:29

回答

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 
} 

編輯:

要照顧文件鎖==>看看this post。如您所見,在DocumentBeforeClose中執行了一些操作:

  1. 檢查文檔是否已保存。如果不是==>問問自己在哪裏保存並自己做。
  2. 封閉自己
  3. 關閉Word

這些事情之後照顧的文件,你可以做你的東西。鎖應該被釋放。

+0

但是我們需要一個AfterClosed事件,我們這麼做是爲了BeforeSaved與異步while循環籤doc.Saved == true,但我們沒有發現任何這樣的BeforeClose – MBulli 2011-02-10 07:58:34

2

使用winword進程來檢查運行在粒子文件上的進程是否退出。

如果您不知道新啓動的實例的使用過程,或者只是簡單地勾住了進程的退出事件。

獲取所有文字處理

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

使用過程Process.Exited