2012-10-16 56 views
0

我想打開一個Microsoft Word文件(.docx)。於是,我就用這個代碼:來自Resources的Process.Start()文件

System.Diagnostics.Process.Start(@"C:\Users\Max\Documents\Visual Studio 2008\Projects\Verenigingspakket\Verenigingspakket\Resources\Help.docx"); 

但現在我想通過Help.Docx從我的資源這樣的方式運行,:

System.Diagnostics.Process.Start(Properties.Resources.Help); 

但是,代碼不起作用,因爲它不是一個很好的重載.Start();

有沒有人知道如何解決這個問題,並給我一點幫助?

在此先感謝

+1

什麼是「Properties.Resources.Help」的類型? – GolfWolf

+0

正如我在我的問題的第一行中說的那樣,它是一個MS word文件,所以.docx – Max

回答

4

你必須首先將它寫入到文件系統。也許是這樣的:

using (FileStream fileStream = new FileStream(@"C:\Help.docx", FileMode.Create, FileAccess.Write)) 
{ 
    using (BinaryWriter binaryWriter = new BinaryWriter(fileStream)) 
    { 
     binaryWriter.Write(Properties.Resources.Help); 
    } 
} 

編輯:我要指出的那些疑惑:一個資源中的二進制文件返回爲字節數組..因此,爲什麼你可以直接將它們傳遞到BinaryWriter.Write()

+0

感謝您的回答,但我在「設計器模式」中添加了help.doxc文件,所以我只是將它拖到資源中,所以我想我不需要再次將它傳輸到我的資源,因爲我希望程序攜帶幫助文件,因此我不必提供確切的位置。我不能像剛纔那樣將其轉換爲二進制文件,然後立即使用Process.Start(Properties.Resources.Help); – Max

+0

編號'Process.Start'不會基於字節數組執行「內存中」進程。您必須先將它存儲在文件系統中,然後使用'Process.Start'來執行該文件。如果您只是使用文件名(省略我的C:\),那麼它將被寫入您的應用程序工作目錄。你可以使用'Process.Start'從那裏執行它。 –

+0

謝謝你的解釋,你幫了我很多! – Max