実際に、あなたが求めるものは共通のパターンであり、ここで関連するいくつかの質問と回答があります。
基本的に何を一般的にやっていることは、次のとおりです。
- 当該のリソースを見つけて、そこにリソースストリームを開きます。
- ターゲットAPIがストリームまたはバイト配列を直接処理できない場合は、ストリームを(一時的な)ファイルに保存します。
- ファイル上の操作をすべて実行するか、ストリーム/バイト配列(サポートされている場合はそうです)で直接実行します。
- は最終的に、あなたが最初に実際に実際にそれが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);
}
注:実際のアプリケーションで追加する可能性のあるエラー処理はほとんどありません。
一時ファイルにリソースを抽出し、PPTビューアで開くことができます – CharlesB