C#中得到系统进程并结束指定的进程

时间:2021-05-02

先修改注册表:

HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Service\\PerfProc\\Performance下的:Disable Performance Counters 的值改为0

得到系统当前进程,加入到listBox中:

System.Diagnostics.Process[] processOnComputer = System.Diagnostics.Process.GetProcesses();

foreach ( System.Diagnostics.Process p in processOnComputer ) { this.listBox1.Items.Add(p.ProcessName); }

关闭某个指定的进程:

System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName(this.listBox1.SelectedItem.ToString());

foreach ( System.Diagnostics.Process p in process) { p.Kill(); }

但是这样会关闭进程的所有实例,比如如果你打开了多个IE,会把所有的IE窗口都关闭。

下面实现关闭某个特定的IE实例

先声明一个ArrayList:

ArrayList windowHandle = new ArrayList();

得到指定进程的所有实例,放到一个ListBox中,同时把主窗口的Handle放到ArrayList中:

System.Diagnostics.Process[] processOnComputer = System.Diagnostics.Process.GetProcessesByName(this.listBox1.SelectedItem.ToString());

foreach ( System.Diagnostics.Process p in processOnComputer ) { this.listBox2.Items.Add(p.MainWindowTitle);//在ListBox中显示主窗体的标题 windowHandle.Add(p.MainWindowHandle); }

把指定的进程的主窗口的Handle和ArrayList中的比对,如果符合就关闭

System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName(this.listBox1.SelectedItem.ToString());

foreach ( System.Diagnostics.Process p in process ) { if ( p.MainWindowHandle == (System.IntPtr)(windowHandle[this.listBox2.SelectedIndex])) { p.Kill(); this.listBox2.Items.RemoveAt(this.listBox2.SelectedIndex); } }

这样可以关闭有主窗体的进程,但是没有主窗体的还不行

本文源自:翔宇亭——IT乐园(http://),转载请保留此信息!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章