编写一个监控程序,在其中使用Timer控件,每隔10秒检查一个指定的进程是否存在,如可检查记事本.如果进程已退出,则自动启动该进程.

解决方案 »

  1.   

    private static System.Timers.Timer aTimer;    public static void Main()
        {
            aTimer = new System.Timers.Timer(10000);
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            aTimer.Interval = 10000;
            aTimer.Enabled = true;
        }
    private static void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            Process[] myProcesses;
            myProcesses = Process.GetProcessesByName("NotePad.exe");
            if (myProcesses.Length == 0)
            {
                 p = Process.Start"NotePad.exe");
            }
        }
      

  2.   


    可以實現,只是myProcesses = Process.GetProcessesByName("NotePad.exe"); 
    改成myProcesses = Process.GetProcessesByName("NotePad"); 
      

  3.   


    private static System.Timers.Timer aTimer;     public static void Main() 
        { 
            aTimer = new System.Timers.Timer(10000); 
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent); 
            aTimer.Interval = 10000; 
            aTimer.Enabled = true; 
        } 
            private static void OnTimedEvent(object source, ElapsedEventArgs e)
            {
                Process[] myProcesses;
                myProcesses = Process.GetProcessesByName("NotePad");
                if (myProcesses.Length == 0)
                {
                    Process.Start("NotePad.exe");
                }
            }
      

  4.   

    是这样的效果了,谢谢!!
    但是为什么要去了.exe后缀呢?这个不明白?
      

  5.   

    谢谢,是这样的效果了
    但是为什么要去点.exe后缀呢?这个不是很懂~~~
      

  6.   

    见MSDN : ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/fxref_system/html/9c254511-d3d5-3b30-df2d-8a79afae262e.htmProcess..::.GetProcessesByName 方法 (String) 
    该进程名是不包括 .exe 扩展名或路径的进程友好名称,如 Outlook。GetProcessesByName 对于获取和操作与同一可执行文件关联的所有进程非常有用。例如,可以将可执行文件名作为 processName 参数传递,以便关闭该可执行文件的所有运行中的实例。