1、获取进程信息
进程的相关信息包括:进程ID、进程名称、占用内存空间大小、启动时间、文件名、进程优先级别等等
获取系统所有进程:Process.GetProcesses();
2、启动和停止进程
- 需要先创建Process的实例
- 设置StartInfo属性指定启动进程的信息
- 使用Start启动进程
- 使用CloseMainWindow方法或Kill方法停止进程
注意:CloseMainWindow方法针对的是有图形界面的进程,该方法向进程的主窗体发生一个关闭请求,其行为与用户在界面中单击按钮命令的效果相同,这样有机会再清除操作界面数据时提示用户保存没有保存的数据;如果进程没有用户界面,可以调用进程的Kill方法,该方法将在不提示保存已更改数据的情况下,立即停止进程。
3、进程的相关属性
- StartInfo:设置进程的启动信息,比如要启动的进程名称、进程使用到的窗口状态等
- WorkingSet64:进程所在物理内存
- StartTime:进程启动时间
- HasExited:进程是否退出
- ExitCode:进程退出编码,0则退成功退出
- EnableRaisingEvents:设置进程终止时是否触发进程退出事件(事件:Exited)
4、进程的相关方法
- Start():启动进程
- WaitForInputldle():等待进程进入空闲状态;指等待进程启动到完成,以免在为启动完成的时候操作进程
- WaitForExit():阻塞当前线程,直到进程正常退出
- CloseMainWindow():关闭进程(正常关闭,用于有用户界面的程序,有存在保存的数据,对用户进行提醒)
- Kill():强制停止进程(用于没有用户界面的程序)
- Close():释放进程占用的资源
5、进程的简单应用
private void ProcessMethod()
{
//声明并实例化进程组件
Process p = new Process();
//设置进程要启动的程序
p.StartInfo = new ProcessStartInfo("notepad");
//启动进程
p.Start();
//获取分配物理内存
long memory = p.WorkingSet64;
//无限期地等待进程启动程序完毕,,阻塞当前线程
p.WaitForInputIdle();
//获取进程启动时间
DateTime startTime = p.StartTime;
Console.WriteLine("进程启动时间:"+startTime.ToString());
Thread.Sleep(1000);
//设置是否激发触发进程终止的事件
p.EnableRaisingEvents = true;
//设置进程终止事件
p.Exited += new EventHandler((obj, arg) =>
{
Console.WriteLine("进程已终止");
});
//关闭进程(针对有界面的程序)
p.CloseMainWindow();
//try
//{
// //针对无界面的程序
// p.Kill();
//}
//catch { }
//无限期等待进程退出,阻塞当前线程
p.WaitForExit();
if (p.HasExited && p.ExitCode == 0)
{
Console.WriteLine("进程已成功退出");
}
//释放Process组件所有资源
// p.Close();
}