【.NET6.0】特定のプロセスを監視して起動してなければ起動する

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【.NET6.0】特定のプロセスを監視して起動してなければ起動する

2022-7-6 | ,

NET6.0で特定のプロセスを監視して起動してなければ起動したい!

概要

この記事では、NET6.0で特定のプロセスを監視して起動してなければ起動する手順を掲載する。

仕様書

環境

  • NET6.0

手順書

NET6.0なのでMainも何もありません。BASICとかみたい。

while (true)
{
    System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcessesByName("AppName");

    if (ps.Length == 0) {
        var app = new System.Diagnostics.ProcessStartInfo
        {
            FileName = "c:\\AppName\\AppName.exe",
            UseShellExecute = true
        };
        System.Diagnostics.Process.Start(app);
    }

    await Task.Delay(1000);
}

System.Diagnostics.Process.GetProcessesByName("AppName")の引数に監視するプロセス名を渡す。大抵の場合は、EXEファイルのファイル名(拡張子抜き)と同じ。

System.Diagnostics.ProcessStartInfo.FileNameにプロセスが起動していない場合に起動するEXEファイルを指定する。PATHが通ってない場合はフルパスで渡す。

System.Diagnostics.ProcessStartInfo.UseShellExecuteにはtrueを渡す。これをしないと起動しないプログラムが多い。

await Task.Delay(1000)の引数で何ミリ秒おきにプロセスが起動してるか監視するタイミングを指定する。ミリ秒なので例のように1000だと1秒おきにプロセスが起動してるか確認するようになる。

まとめ(感想文)

オフィスでサイネージ的に使ってるPCなんかで使えるかもね!