过期罐头电脑论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3023|回复: 0
收起左侧

显示出所有的进程,并结束指定的进程

[复制链接]
sxtylhg 2012-1-1 16:55:01 | 显示全部楼层
得到系统当前进程,加入到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);   
}   
}   
  
这样可以关闭有主窗体的进程,但是没有主窗体的还不行  


您需要登录后才可以回帖 登录 | 注册

本版积分规则

一键重装系统|雨人系统下载|联系我们|网站地图|过期罐头电脑论坛

GMT+8, 2024-12-27 16:15 , Processed in 0.043440 second(s), 25 queries .

官方免责声明:本站内容来自网友和互联网.若侵犯到您的版权.请致信联系,我们将第一时间删除相关内容!

Powered by Discuz!

专注于win7_win10_win11系统下载装机

© 2010-2023 GQGTPC.Com

快速回复 返回顶部 返回列表