2012-12-27 27 views
1

嗨,所有我使用互操作來打開MS-Word.Word.Word.It中的幾個文件。問題是,當我嘗試打開已打開文件不起作用。使用對話框出現在任務管理器中,只能通過在任務管理器中點擊它來訪問它。如何使其可見?或者你可以建議其他方式來做到這一點?使用word interop打開兩個相同的文件

enter image description here

Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application(); 
    WordApp.DisplayAlerts = WdAlertLevel.wdAlertsAll; 
    Microsoft.Office.Interop.Word.Document WordDoc = new Microsoft.Office.Interop.Word.Document(); 
    WordDoc = WordApp.Documents.Open(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,Type.Missing); 
    WordApp.Visible = true; 
    System.Runtime.InteropServices.Marshal.ReleaseComObject(WordApp); 
+0

如果你只需要從文件中讀取。您可以嘗試以只讀模式打開它。 http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.documents.open(v=office.11​​).aspx – Syneryx

+0

爲什麼你需要打開同一個文件兩次?知道的原因也許你可以得到更好的反饋:) –

+0

@Żubrówka沒有我的應用程序有一個按鈕來打開一個文件的word.For第一次它工作正常,但當我第二次點擊按鈕時,文件是打開的應用程序只是停止。使用中的文件對話框出現在任務管理器中,但隱藏在用戶界面中 – Karthik

回答

0

你可以嘗試加載文件在另一AppDomain,你可以卸載後,你不需要它

AppDomainSetup ads = new AppDomainSetup(); 
ads.PrivateBinPath = Path.GetDirectoryName("C:\\some.doc"); 
AppDomain ad2 = AppDomain.CreateDomain("AD2", null, ads); 
ProxyDomain proxy = (ProxyDomain)ad2.CreateInstanceAndUnwrap(typeof(ProxyDomain).Assembly.FullName, typeof(ProxyDomain).FullName); 
bool ok = proxy.DoMsWork("C:\\some.doc"); 
AppDomain.Unload(ad2); 

    public class ProxyDomain : MarshalByRefObject 
    { 
     public bool DoMsWork(string assemblyPath) 
     { 
      //Load your file and do work here 
     } 
    } 
+0

任何投票的理由? – VladL

0

確保卸載互操作時使用此:

WordObject.Quit 

以某種方式釋放互操作對象不會總是工作。

上.Quit退房額外信息http://msdn.microsoft.com/fr-fr/library/microsoft.office.interop.word._application.quit(v=office.11).aspx

您可以互操作的應用程序中使用變得可見

WordObject.Visible = true 

您還應該裸記住,你永遠不應該在服務器 - 使用Office互操作對象文件處理,生成等方面的過程,因爲它只是沒有這樣做。互操作對象是內存和cpu飢餓,真正不穩定並且崩潰了很多!

+0

我不是在談論卸載interop.What我需要的是一種機制來文件文件是否已經打開在文字中或使文件正在使用對話框的前面。感謝您的幫助:) – Karthik

1

如果您需要僅使用只讀功能第二次打開文件(例如,如果您將其用作模板),那麼我沒有看到一個原因您不應該只是複製它並打開每次你需要它時都會有重複。

也許你可以添加額外的信息,所以也許有人有更好的建議找到解決方案!

+0

打開爲只讀,並使用另存爲保存文件。對我來說很好 –

相關問題