2012-02-20 9 views
0

PowerPointビューアでプレゼンテーションを表示したい場合、pptファイルがリソースにあります。問題は、どのように私はそれにアクセスし、PowerPointビューアで見ることができるということです。ここでC#のリソースからPPTを抽出して開きます

は、サンプルコードでは、どのようにリソースに含むPPTにより、このパスを置き換えることができます

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

のですか?

+2

一時ファイルにリソースを抽出し、PPTビューアで開くことができます – CharlesB

答えて

3

実際に、あなたが求めるものは共通のパターンであり、ここで関連するいくつかの質問と回答があります。

基本的に何を一般的にやっていることは、次のとおりです。

  1. 当該のリソースを見つけて、そこにリソースストリームを開きます。
  2. ターゲットAPIがストリームまたはバイト配列を直接処理できない場合は、ストリームを(一時的な)ファイルに保存します。
  3. ファイル上の操作をすべて実行するか、ストリーム/バイト配列(サポートされている場合はそうです)で直接実行します。
  4. は最終的に、あなたが最初に実際に実際にそれがPPTファイルであることは重要ではありません(PPTファイルを抽出し、1

のでステップから、もしあれば、一時ファイルを削除し、可能性のあるファイルによって、またはその点についてはバイトブロブ)。

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()を使用して開きます。 PPTはPowerPointまたはPowerPoint Viewerの登録されたファイル拡張子である必要があるため、Powerpoint実行可能ファイルへのパスを指定する必要はありません。両方をインストールしている場合は、間違ったアプリケーションの起動を防ぐために、関連する実行可能ファイルへのパスを提供することができます。あなたがパスをハードコードしていないことを確認してくださいが、レジストリ(または同様の、私はチェックしていないので、それはあまりにも具体的になるので)から取得しようとします。

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

注:実際のアプリケーションで追加する可能性のあるエラー処理はほとんどありません。

+0

ありがとうございます。 – vikrantx