前言:公司做的一款客户端程序,没有加入看门狗监控程序,客户端被用户关闭后不会自动启动,因此用 C#写了一个看门程序。
环境:NETFramework
主要功能:(暂时仅需这些功能)
1、MonitorServer 监控程序名称;
2、StartServer 需要启动的程序名称;
3、TimeNum 多久检测一次;
4、Display 是否显示程序窗口;
环境:NETFramework
主要功能:(暂时仅需这些功能)
1、MonitorServer 监控程序名称;
2、StartServer 需要启动的程序名称;
3、TimeNum 多久检测一次;
4、Display 是否显示程序窗口;
程序源码:
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using System.Diagnostics;
- using System.Threading;
- using System.Configuration;
- namespace watchdog
- {
- public partial class logs : Form
- {
- public logs()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- string test_dis = ConfigurationManager.AppSettings["Display"];//是否显示窗口
- if (test_dis == "0")
- {
- this.Hide();//隐藏窗口
- this.ShowInTaskbar = false;
- this.WindowState = FormWindowState.Minimized;
- }
- string MonitorServer = ConfigurationManager.AppSettings["MonitorServer"];
- this.softname.Text = MonitorServer;
- Thread th = new Thread(new ThreadStart(ThreadMethod)); //创建线程
- th.Start(); //启动线程
- }
- void ThreadMethod()
- {
- string MonitorServer = ConfigurationManager.AppSettings["MonitorServer"];//获取需要监控的进程名称
- string StartServer = ConfigurationManager.AppSettings["StartServer"];//获取需要启动的程序名称
- int TimeNum = int.Parse(ConfigurationManager.AppSettings["TimeNum"]);//休眠时间
- while (true)
- {
- if (Process.GetProcessesByName(MonitorServer).ToList().Count == 0)//获取进程列表是否有监控的进程
- {
- try
- {
- Process.Start(StartServer);//启动程序
- }
- catch(Exception ex)
- {
- MessageBox.Show(ex.Message);//抛出异常信息
- }
- }
- Thread.Sleep(TimeNum);//休眠
- }
- }
- }
- }
config 配置文件:
点击跳转到百度云盘下载, 提取码: dtqi
- <?xml version="1.0" encoding="utf-8"?>
- <configuration>
- <startup>
- <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
- </startup>
- <appSettings>
- <add key="MonitorServer" value="SmartSentry"></add>
- <add key="StartServer" value="SmartSentry.exe"></add>
- <add key="TimeNum" value="3000"></add>
- <add key="Display" value="0"></add>
- </appSettings>
- </configuration>