業務の自動化を行うアプリケーションを作成する際、拡張子に関連付けられたアプリケーションで開く処理を行いたいことがあります。C#には、このようなアプリケーションの起動を簡単に行う仕組みがあります。
本記事では、C#でファイルタイプに関連付けられたアプリケーションで開く方法を紹介します。
サンプルコード1:関連付けられたアプリケーションで開く
以下のサンプルコードは、選択されたファイルを関連付けられたアプリケーションで開く例です。ここでは、テキストファイル(*.txt)を使用し、既定のテキストエディタで開きます。
using System;
using System.Diagnostics; // Process
using System.IO;
class Program
{
static void Main()
{
string filePath = @"C:\path\to\your\file.txt";
try
{
// 関連付けられたアプリケーションを起動 ★
Process.Start(filePath);
}
catch (Exception ex)
{
Console.WriteLine("エラーが発生しました: " + ex.Message);
}
}
}
選択されたファイルを関連付けられたアプリケーションで開くことは、System.Diagnostics名前空間にあるProcessクラスのStartメソッドを使用することにより、簡単に実現できます。ただし、ファイルが存在しない等、何らかの原因でファイルが開けない場合に例外が発生することがありますので、try-catchで例外処理を行うようにします。
サンプルコード2:関連付けられたアプリケーションで開き、アプリの終了を待つ
以下のサンプルコードは、バッチファイルを実行し、バッチファイルが終了するまで待ち、アプリケーションの実行結果を終了コードとして取得して表示する例です。
using System;
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
string filePath = @"C:\path\to\your\file.txt";
try
{
// バッチファイルを実行し、Processオブジェクトを取得
Process process = Process.Start(filePath);
// 終了を待機
process.WaitForExit();
// 終了コードを表示
Console.WriteLine($"アプリケーションの終了コード:{process.ExitCode}");
}
catch (Exception ex)
{
Console.WriteLine("エラーが発生しました: " + ex.Message);
}
}
}
関連付けられたアプリケーションでファイルを開いた後、そのアプリケーションの終了を待つには、Process.Startメソッドから返されるProcessクラスのオブジェクトを使用して、WaitForExitメソッドでプロセス(アプリケーション)の終了を待ちます。実行したアプリケーションの終了コードは、ExitCodeプロパティにより取得可能です。通常、終了コードは0の場合が正常終了、非0は異常終了を表します。
その他情報
Processクラスには、アプリの終了を待つ以外にも、様々な機能が実装されています。
以下は、Processクラスが持つ機能の例です。
- 起動したプロセスを強制終了する
- URLを開く(デフォルトのwebブラウザが立ち上がります)
- 起動したコンソールアプリやバッチファイルの標準出力やエラー出力の内容を取得する
- ユーザ名とパスワードを指定し、別ユーザとしてアプリを実行する
まとめ
本記事では、C#でファイルタイプに関連付けられたアプリケーションで開く方法を紹介しました。業務の自動化を行うアプリの作成においては、Processクラスが非常に便利です。ぜひご活用ください。