先修改注册表: HKEY_LOCAL_MACHINE\\SYST"> 先修改注册表: HKEY_LOCAL_MACHINE\\SYST" />
科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道得到系统进程和结束某个指定的进程

得到系统进程和结束某个指定的进程

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

   自己想了另一个办法来作 先修改注册表: HKEY_LOCAL_MACHINE\\SYST

作者:中国IT实验室 来源:中国IT实验室 2007年9月28日

关键字: 进程 编程

  

自己想了另一个办法来作

 

先修改注册表:

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);

}

 

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

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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章