在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
启动和停止进程 一、启动进程 方法1: (1) 创建一个Process组件的实例,例如: Process myProcess = new Process(); (2) 设置其对应的StartInfo属性,指定要运行的应用程序名以及传递的参数: myProcess.StartInfo.FileName = “文件名”; process1.StartInfo.Arguments=”参数”; 如果该进程带有图形用户界面,也可以指定图形用户界面的打开方式。 例如: myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal; (3) 调用该实例的Start方法启动该进程。 方法2: 直接调用Process类提供的静态方法启动进程。 二、停止进程 通过两种方法利用Process组件停止进程。 (1) 如果进程有图形界面,调用CloseMainWindow方法。 (2) 如果进程没有用户界面,调用进程的Kill方法。
不论有没有图形用户界面,如果希望强行让其退出,在权限一允许的情况下,均可以调用Kill方法终止该进程。
下面举出一个实例,启动、停止和观察Notepad++进程。 (1) 用ListView显示“记事本”进程信息。 (2) 用Process类提供的静态方法启动进程。 (3) 终止进程时,把所有“记事本”进程全部终止。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.IO; using System.Threading;
namespace ProcessStartKill { public partial class MainForm : Form { string _fileName = "notepad++"; int _fileIndex;
public MainForm() { InitializeComponent();
//以详细列表方式显示 this.listView.View = View.Details;
//参数含义,列名称,宽度,水平对齐方式 this.listView.Columns.Add("进程ID",70,HorizontalAlignment.Left); this.listView.Columns.Add("进程名字", 70, HorizontalAlignment.Left); this.listView.Columns.Add("占用内存", 70, HorizontalAlignment.Left); this.listView.Columns.Add("启动时间", 70, HorizontalAlignment.Left); this.listView.Columns.Add("文件名", 270, HorizontalAlignment.Left); }
private void btnProStart_Click(object sender, EventArgs e) { //创建一个文件,然后用NotePad++打开 string argument= Application.StartupPath + "\\Myfiles"+ _fileIndex +".txt"; if (File.Exists(argument) == false) { File.Create(argument); }
//获取要启动的进程名及参数 ProcessStartInfo ps = new ProcessStartInfo(_fileName, argument); ps.WindowStyle = ProcessWindowStyle.Normal; _fileIndex++; Process p = new Process(); p.StartInfo = ps; p.Start(); //等待启动完成,否则获取失败 p.WaitForInputIdle(); RefreshListView();
}
private void RefreshListView() { this.listView.Items.Clear();
//根据名字获取到本机的进程 Process[] pro = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(_fileName));
foreach (Process item in pro) { //将每个进程的名称,占用的物理内存以及进程开始的时间加入listview中 ListViewItem LVI = new ListViewItem( new string[] { item.Id.ToString(), item.ProcessName, string.Format("{0} KB",item.PrivateMemorySize64/1024.0f), string.Format("{0}",item.StartTime), item.MainModule.FileName }); listView.Items.Add(LVI); } } //停止进程 private void btnKill_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; //创建新的Process组件的数组,并将它们与指定的进程名称(Notepad++)的所有进?程资源相关联 Process[] myprocess = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(_fileName)); foreach (Process item in myprocess) { //通过向进程主窗口发送关闭消息达到关闭进程的目的 item.CloseMainWindow(); //等待毫秒 Thread.Sleep(1000); //释放与此组件相关的所有资源 item.Dispose(); } _fileIndex = 0; RefreshListView(); this.Cursor = Cursors.Default; } } }
|
请发表评论