PDFSharp を使用して PDF を作成しています。彼らの例では、PDF を保存してから、それを開くビューアーを選択するプロセスを開始します。次のようになります。
document.Save(fileName);
Process.Start(fileName);
私のテストでは、Acrobat Reader が既に開いている場合、プロセスが既に実行されているため、i/o 例外が発生することがわかりました。だから私はこの投稿に従ってみました: Detecting a Process is already running in windows using C# .net
プロセスの検出について。そこで、上記のコードを次のように変更しました。
document.Save(fileName);
if (System.Diagnostics.Process.GetProcessesByName("AcroRd32.exe").Length == 0)
{
Process.Start(fileName);
}
そこで、質問が 2 つあります。
1) これは機能しません。長さは常に 0 なので、間違ったプロセスを返しているのか、それともプロセスが見つからないのか疑問に思っています。タスク マネージャーを見ると、AcroRd32.exe が実行中のプロセスの名前です。
2) これを行うためのより良い方法はありますか? このプロセスをコードにハードコーディングしているようで、Acrobat の他のバージョン (64 ビット バージョンがある場合など) や他の PDF ビューアー全般をキャッチするより良い方法があるかどうかはわかりませんでした。
これが初心者の質問である場合は申し訳ありません。この .NET は私にとってかなり新しいものです。ありがとう。