2011-06-11 85 views
0

解決環境interop.word:問題與.NET應用程序

MS Visual Studio 2010的旗艦版,MS Office 2010專業,微軟互操作類

場景:

我創建了一個。使用Interop類與MS Word進行交互的Net應用程序。考慮一下:一個模仿鍵值對錶的應用程序。當用戶點擊「值」字段時,.net應用程序打開一個雙字窗口,用戶可以在其中輸入一些筆記。點擊關閉(winword)後,.net應用程序將執行一個winword.wordopenxml並將數據保存在字段中。爲了實現這一點,我已經爲winword添加了事件句柄。該應用程序運行得很好。問題出現時,我打開了多個winword實例(分別由用戶但不通過.net應用程序)。 .net應用程序中的事件處理程序應用於所有winword實例,因此,在關閉一個實例字時,所有其他實例也會關閉。我嘗試了不同的方式來初始化應用程序中的單詞對象。我也試着圍繞「初始化兩個winword實例並退出第一個實例」 - >這種方法也不能很好地工作。

大師:你能幫我找到適合這個問題的解決方案嗎?

-Rupesh

回答

1

這不是真的在發生什麼。它可能看起來像你有多個Word實例運行,但實際上只有一個。 Word是一個非常大的程序,需要大量的系統資源。當用戶啓動另一個副本時,該副本將檢查Word是否已在運行並要求其打開文檔。然後退出。原始實例只是創建另一個窗口,否則它確實看起來完全像另一個Word實例。

所以,當你讓Word退出時,你也會殺死所有其他窗口。使用Taskmgr.exe,進程標籤來驗證這一點。作爲解決方法,請考慮枚舉Documents集合以查看還打開了什麼。

+0

謝謝你的迴應。我完全理解單詞是如何工作的。讓我重述一下我的問題。是否有可能將事件「僅」附加到由.net應用程序打開的單詞的新實例,而不是將其附加到整個winword.exe過程? – user794205 2011-06-12 18:03:10