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なんかで使えるかもね!