C#实现启动,关闭与查找进程的方法
程序员文章站
2022-03-21 13:58:12
本文实例讲述了c#实现启动,关闭与查找进程的方法。分享给大家供大家参考,具体如下:
运行效果截图如下:
查找/列出进程很容易,但干掉进程得借助系统命令ntsd.ex...
本文实例讲述了c#实现启动,关闭与查找进程的方法。分享给大家供大家参考,具体如下:
运行效果截图如下:
查找/列出进程很容易,但干掉进程得借助系统命令ntsd.exe,详细用法见下面的代码 :
using system; using system.diagnostics; using system.windows.forms; namespace processdemo { public partial class form1 : form { public form1() { initializecomponent(); } private void form1_load(object sender, eventargs e) { this.linklabel1.links.add(0, linklabel1.text.length, "//www.jb51.net/"); } private void linklabel1_linkclicked(object sender, linklabellinkclickedeventargs e) { this.linklabel1.links[linklabel1.links.indexof(e.link)].visited = true; string target = e.link.linkdata as string; if (target != null && target.startswith("http://")) { process.start(target); } } /// <summary> /// 列出所有可访问进程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnlist_click(object sender, eventargs e) { process[] processes; processes = process.getprocesses(); string str = ""; foreach (process p in processes) { try { str = p.processname; this.lst1.items.add("名称:" + p.processname + ",启动时间:" + p.starttime.toshorttimestring() + ",进程id:" + p.id.tostring() ); } catch (exception ex) { this.lst1.items.add(ex.message.tostring());//某些系统进程禁止访问,所以要加异常处理 } } } private void btnfind_click(object sender, eventargs e) { txtfind.text = txtfind.text.trim().tolower(); if (txtfind.text.length > 0) { process[] arrp = process.getprocesses(); foreach (process p in arrp) { try { if (p.processname.tolower() == txtfind.text) { messagebox.show(txtfind.text + " 找到了,pid为 " + p.id.tostring()); return; } } catch { } } messagebox.show("未找到该进程,请检查输入!"); } } private void btnkill_click(object sender, eventargs e) { txtfind.text = txtfind.text.trim().tolower(); int pid = -1; if (txtfind.text.length > 0) { process[] arrp = process.getprocesses(); foreach (process p in arrp) { try { if (p.processname.tolower() == txtfind.text) { pid = p.id; break; } } catch { } } if (pid != -1) { runcmd("ntsd -c q -p " + pid); } } } /// <summary> /// 运行dos命令 /// dos关闭进程命令(ntsd -c q -p pid )pid为进程的id /// </summary> /// <param name="command"></param> /// <returns></returns> public string runcmd(string command) { process p = new process(); p.startinfo.filename = "cmd.exe"; p.startinfo.arguments = "/c " + command; p.startinfo.useshellexecute = false; p.startinfo.redirectstandardinput = true; p.startinfo.redirectstandardoutput = true; p.startinfo.redirectstandarderror = true; p.startinfo.createnowindow = true; p.start(); return p.standardoutput.readtoend(); } } }
另外ntsd.exe在windows vista以上的版本(包括windows 2008)上,出于安全考虑已经被ms给去掉了,但我们可以直接从xp下复制过来继续使用,这里为方便大家给出ntsd.exe的。
希望本文所述对大家c#程序设计有所帮助。