2012-02-20 63 views
0

我想在PowerPoint查看器中查看演示文稿,ppt文件位於資源中。所以問題是我如何訪問它並在PowerPoint查看器中查看。從C#資源中提取並打開PPT

下面是示例代碼

Process.Start(@"C:\Program Files\Microsoft Office\Office12\PPTVIEW.exe",**@"e:\presentation.ppt")**; 

我怎麼能代替由包含在資源PPT這條道路?

+2

您可以將資源提取到臨時文件並使用PPT查看器將其打開 – CharlesB 2012-02-20 13:17:37

回答

3

其實,你所要求的是一種常見的模式,在這裏有一些相關的問題和答案。

基本上你一般做的是以下幾點:

  1. 找到相關資源,並打開一個資源流吧。
  2. 如果您的目標API無法直接處理流或字節數組,則將該流保存到(臨時)文件。
  3. 對文件或直接在流/字節數組上執行任何操作(如我所說,如果支持的話)。
  4. 最終從第1步

所以刪除臨時文件,如果有的話,你第一次提取的PPT文件(實際上它並沒有真正的問題,這是一個PPT文件,可以通過任何文件或字節blob)。

string tempFile = Path.GetTempFileName(); 

using (Stream input = assembly.GetManifestResourceStream("MyPresentation.PPT")) 
using (Stream output = File.Create(tempFile)) 
{ 
    input.CopyTo(output); // Stream.CopyTo() is new in .NET 4.0, used for simplicity and illustration purposes. 
} 

然後你用Process.Start()打開它。您無需指定Powerpoint可執行文件的路徑,因爲PPT應該是PowerPoint或PowerPoint Viewer的註冊文件擴展名。如果您同時安裝了這兩個軟件,您可能仍然希望提供相關可執行文件的路徑以防止啓動錯誤的應用程序。確保你沒有硬編碼的路徑,但嘗試從註冊表中檢索它(或類似的,我沒有檢查,因爲它現在太具體了)。

using (var process = Process.Start(tempFile)) 
{ 
    process.WaitForExit(); 
    // remove temporary file after use 
    File.Delete(tempFile); 
} 

注:我遺漏了一些錯誤處理,您可能想添加到實際應用程序中。

+0

感謝它的工作.. – vikrantx 2012-02-21 06:05:04