C#实现进程管理的启动和停止实例
程序员文章站
2023-12-05 22:38:52
本文实例讲述了c#实现进程管理的启动和停止方法。分享给大家供大家参考。具体实现方法如下:
using system;
using system.collecti...
本文实例讲述了c#实现进程管理的启动和停止方法。分享给大家供大家参考。具体实现方法如下:
using system; using system.collections.generic; using system.componentmodel; using system.data; using system.drawing; using system.text; using system.windows.forms; using system.io; //引用命名空间 using system.diagnostics; using system.threading; namespace startstopprocess { public partial class form1 : form { int fileindex; string filename = "notepad.exe"; process process1 = new process(); public form1() { initializecomponent(); //以详细列表方式显示 listview1.view = view.details; //参数含义:列名称,宽度(像素),水平对齐方式 listview1.columns.add("进程id", 70, horizontalalignment.left); listview1.columns.add("进程名称", 70, horizontalalignment.left); listview1.columns.add("占用内存", 70, horizontalalignment.left); listview1.columns.add("启动时间", 70, horizontalalignment.left); listview1.columns.add("文件名", 280, horizontalalignment.left); } private void buttonstart_click(object sender, eventargs e) { string argument = application.startuppath + "\\myfile" + fileindex + ".txt"; if (file.exists(argument)==false) { file.createtext(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 buttonstop_click(object sender, eventargs e) { this.cursor = cursors.waitcursor; //创建新的process组件的数组,并将它们与指定的进程名称(notepad)的所有进程资源相关联. process[] myprocesses; myprocesses = process.getprocessesbyname(path.getfilenamewithoutextension(filename)); foreach (process p in myprocesses) { //通过向进程主窗口发送关闭消息达到关闭进程的目的 p.closemainwindow(); //等待1000毫秒 thread.sleep(1000); //释放与此组件关联的所有资源 p.close(); } fileindex = 0; refreshlistview(); this.cursor = cursors.default; } private void refreshlistview() { listview1.items.clear(); //创建process类型的数组,并将它们与系统内所有进程相关联 process[] processes; processes = process.getprocessesbyname(path.getfilenamewithoutextension(filename)); foreach (process p in processes) { //将每个进程的进程名称、占用的物理内存以及进程开始时间加入listview中 listviewitem item = new listviewitem( new string[]{ p.id.tostring(), p.processname, string.format("{0} kb", p.privatememorysize64/1024.0f), string.format("{0}",p.starttime), p.mainmodule.filename }); listview1.items.add(item); } } private void buttonrefresh_click(object sender, eventargs e) { refreshlistview(); } private void form1_load(object sender, eventargs e) { } } }
希望本文所述对大家的c#程序设计有所帮助。