A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 9881008杜鹏 黑马帝   /  2011-12-21 00:29  /  1808 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

namespace Start_and_Shutdown
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            TextBox box = new TextBox();           
            box.Multiline = true;
            GetProcess();
        }
        private string  GetProcess()
        {
            Process[] pres = Process.GetProcesses();
            foreach (Process pre in pres)
            {
                listorder.Items.Add(pre.ProcessName);//获取进程的名称

            }
            return listorder.Text;
        }

        private void btnkill_Click(object sender, EventArgs e)
        {
            Process[] pres = Process.GetProcesses();
            List<string> process = new List<string>();
            foreach (Process pre in pres)
            {
                process.Add(pre.ProcessName );
            }
            foreach (Process  pre in pres)
            {
                if(pre!=null&&!pre.HasExited)//判断该进程是否为空和进程是否结束
                {
               foreach (string s in process )     
                {
                    if(listorder .SelectedItem.ToString()==s)//判斷用戶選擇的ListBox中的項在進程中是否存在
                    {
                        DialogResult message = MessageBox.Show("是否干掉该进程?", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (Convert.ToString(message) == "Yes")
                        {
                            pre.Kill();
                            return;
                        }
                    }
                }
                }
            }
                   }
    }
}
在ListBox列表中干不掉进程,怎么回事呢 ,大家帮忙看看代码有神马问题

2 个回复

倒序浏览
牛奎 黑马帝 2011-12-23 18:02:55
沙发
当程序走到这一行时 ->>  if(listorder .SelectedItem.ToString()==s)//判斷用戶選擇的ListBox中的項在進程中是否存在
pre还是第一个进程,  pre.Kill()方法结束是foreach (Process pre in pres)中第一个进程
你用    List<string> process = new List<string>();
            foreach (Process pre in pres)
            {
                process.Add(pre.ProcessName );
            }
获得进程名,我感觉没有必要
去掉后
Process[] pres = Process.GetProcesses();
            foreach (Process pre in pres)
            {
                if (pre != null)//判断该进程是否为空和进程是否结束
                {
                    if (listorder.SelectedItem.ToString() == pre.ProcessName)//判斷用戶選擇的ListBox中的項在進程中是否存在
                    {
                        DialogResult message = MessageBox.Show("是否干掉该进程?", "删除确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                        if (Convert.ToString(message) == "Yes")
                        {
                            pre.Kill();
                            return;
                        }
                    }
                }
            }
你试试
回复 使用道具 举报
牛奎 黑马帝 2011-12-23 18:09:58
藤椅
去掉List<string> process = new List<string>()后,出现新问题了[&&!pre.HasExited]这句话不能加,提示拒绝访问。{:soso_e143:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马