请问c#怎么做才能监控另一个C#程序有没有关闭 10
4个回答
展开全部
原理大概是这样,首先确定你这个程序在系统中的进程名,然后进行比较,如果有此进程,就说明程序是开启的,如果没有此进程就说明是关闭了的,需要开启,下面是一个关闭QQ进程的例子,你只需要稍加修改就可以实现你想要的功能,由于时间原因,我就没有专门征对你这个问题去编写代码,希望这段程序对你有用,祝你成功
Process[] pro = Process.GetProcess(); //获取本机所有的进程
for (int k = 0; k < pro.Length; k++)
{
if (pro[k].ProcessName.Equals("QQ.exe"))
{
try{
pro[k].Kill();
}catch
{
MessageBox.Show("关闭进程时出错!");
}
}
if (pro[k].ProcessName.Equals("ctfmon.exe"))
{
try{
pro[k].Kill();
}catch
{
MessageBox.Show("关闭进程时出错!");
}
}
}
Process[] pro = Process.GetProcess(); //获取本机所有的进程
for (int k = 0; k < pro.Length; k++)
{
if (pro[k].ProcessName.Equals("QQ.exe"))
{
try{
pro[k].Kill();
}catch
{
MessageBox.Show("关闭进程时出错!");
}
}
if (pro[k].ProcessName.Equals("ctfmon.exe"))
{
try{
pro[k].Kill();
}catch
{
MessageBox.Show("关闭进程时出错!");
}
}
}
参考资料: http://zhangqiangqiangnet.blog.163.com/blog/static/13162834920100885117218/
展开全部
楼主说的是线程守护把
using System;
using System.Text;
using System.Threading;
namespace ThreadTest
{
class Program
{
static void Main(string[] args)
{
Student student = new Student();
new Thread(new ThreadStart(new Thread1(student).run)).Start();//添加信息
new Thread(new ThreadStart(new Thread2(student).run)).Start();//读取信息
}
}
/// <summary>
/// 向Student类加添加信息
/// </summary>
public class Thread1
{
private Student student;
public Thread1(Student student)
{
this.student = student;
}
public void run()
{
int i = 0;
while (true)
{
if (i == 0)
student.Add("jxncwzb", 23);
else
student.Add("jxncwzb++", 22);
i = (i + 1) % 2;
}
}
}
/// <summary>
/// 读取Thread1干才添加的信息
/// </summary>
public class Thread2
{
private Student student;
public Thread2(Student student)
{
this.student = student;
}
public void run()
{
while (true)
{
student.GetInfo();
}
}
}
public class Student
{
private string name;
private int age;
private bool isRun = false;
public void Add(string name, int age)
{
Monitor.Enter(this);
if (isRun)
Monitor.Wait(this);
this.name = name;
//Thread.Sleep(10);
this.age = age;
this.isRun = true;
Monitor.Pulse(this);
Monitor.Exit(this);
}
public void GetInfo()
{
Monitor.Enter(this);
if (!isRun)
Monitor.Wait(this);
Console.Write("姓名:" + name);
Console.WriteLine("&年龄:" + age.ToString());
this.isRun = false;
Monitor.Pulse(this);
Monitor.Exit(this);
}
}
}
湖北新蓝海是一家专注于网络营销 网络推广的领头企业 ,已为武汉健民、华工激光、江西仁和等多家知名企业提供网络营销外包服务。详情请到各大搜索引擎中搜索“湖北新蓝海”
using System;
using System.Text;
using System.Threading;
namespace ThreadTest
{
class Program
{
static void Main(string[] args)
{
Student student = new Student();
new Thread(new ThreadStart(new Thread1(student).run)).Start();//添加信息
new Thread(new ThreadStart(new Thread2(student).run)).Start();//读取信息
}
}
/// <summary>
/// 向Student类加添加信息
/// </summary>
public class Thread1
{
private Student student;
public Thread1(Student student)
{
this.student = student;
}
public void run()
{
int i = 0;
while (true)
{
if (i == 0)
student.Add("jxncwzb", 23);
else
student.Add("jxncwzb++", 22);
i = (i + 1) % 2;
}
}
}
/// <summary>
/// 读取Thread1干才添加的信息
/// </summary>
public class Thread2
{
private Student student;
public Thread2(Student student)
{
this.student = student;
}
public void run()
{
while (true)
{
student.GetInfo();
}
}
}
public class Student
{
private string name;
private int age;
private bool isRun = false;
public void Add(string name, int age)
{
Monitor.Enter(this);
if (isRun)
Monitor.Wait(this);
this.name = name;
//Thread.Sleep(10);
this.age = age;
this.isRun = true;
Monitor.Pulse(this);
Monitor.Exit(this);
}
public void GetInfo()
{
Monitor.Enter(this);
if (!isRun)
Monitor.Wait(this);
Console.Write("姓名:" + name);
Console.WriteLine("&年龄:" + age.ToString());
this.isRun = false;
Monitor.Pulse(this);
Monitor.Exit(this);
}
}
}
湖北新蓝海是一家专注于网络营销 网络推广的领头企业 ,已为武汉健民、华工激光、江西仁和等多家知名企业提供网络营销外包服务。详情请到各大搜索引擎中搜索“湖北新蓝海”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
到系统进程表中去查这个程序,如果不在就启动它
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
重写close方法行吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询