前言:公司做的一款客户端程序,没有加入看门狗监控程序,客户端被用户关闭后不会自动启动,因此用 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>