ナルシーNote

2020年12月からC#、2021年2月からPythonを51歳で始めました。学んだことを備忘録として残してます。そろそろN88BASICは卒業しようかな😱

<c#>アプリを自動的に再起動する

ときどきフリースしてしまうアプリがあるので、アプリを自動的に再起動するアプリを作ってみました。

 

 

    using System;
using System.Linq;

namespace RestartApp
{
    class Program
    {
        static void Main(string[] args)
        {

            if (args.Count() < 2)
            {
                //ローカルコンピュータ上で実行されているすべてのプロセスを取得
                System.Diagnostics.Process[] ps =
                    System.Diagnostics.Process.GetProcesses();
                foreach (System.Diagnostics.Process p in ps)
                {
                    try
                    {
                        //プロセス名を出力する
                        Console.WriteLine("プロセス名: {0}", p.ProcessName);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }

                Console.WriteLine();
                Console.WriteLine("引数1:終了させるプロセス名 引数2:起動するファイル名");
                Console.WriteLine("Hit any key!!");
                Console.ReadKey();
                return;
            } 

            //プロセスを取得
            System.Diagnostics.Process[] procs =
                System.Diagnostics.Process.GetProcessesByName(args[0]);

            foreach (System.Diagnostics.Process proc in procs)
            {
                Console.WriteLine("終了中:" + proc.ProcessName);
                proc.CloseMainWindow();

                //プロセスが終了するまで最大10秒待機する
                proc.WaitForExit(10000);
                //プロセスが終了したか確認する
                if (proc.HasExited)
                    Console.WriteLine("正常終了しました。:" + proc.ProcessName);
                else
                {
                    proc.Kill();
                    Console.WriteLine("強制終了しました。:" + proc.ProcessName);
                }
            }

            //再度起動する
            System.Diagnostics.Process procRun =
                System.Diagnostics.Process.Start(args[1]);

            // Console.ReadKey();

        }
    }
}