【问题标题】:c# Kill process created by Process.Start("explorer.exe")c# 杀死由 Process.Start("explorer.exe") 创建的进程
【发布时间】:2020-10-27 02:18:19
【问题描述】:

我想打开(或创建进程)目录特定位置并关闭(或杀死进程)

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

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

        Process ps;

        private void button1_Click(object sender, EventArgs e)
        {
            ps = Process.Start("explorer.exe", @"C:\test");
            MessageBox.Show(ps.Id.ToString());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            ps.Kill();
        }
    }
}

但是发生了错误 “无法处理请求,因为进程已退出。”


编辑

我想创建进程(“explorer.exe C:\test”)(单击按钮 1)并杀死前面的进程(单击按钮 2)。 “单击按钮 1”,然后“单击按钮 2”。

我预测 "进程 ps = Process.Start("explorer.exe C:\test");" 可以杀人 “ps.Kill()”。

但是 ps(进程变量)已经消失(被杀死?)并且无法杀死创建的目录进程(“explorer.exe”,@“C:\test”)。

如何杀死我创建(或启动)的 explorer.exe 进程


如何杀死由 Process.Start("explorer.exe") 创建的进程?

【问题讨论】:

标签: c#


【解决方案1】:

请试试这个代码。

Process processToKill = Process.GetProcessById(ps.Id);
processToKill.Kill();

您可以使用Process.GetProcessById() 获取当前正在运行的进程,然后使用Process.Kill() 杀死一个进程。

【讨论】:

  • Thread.Sleep(3000); //停止响应3秒 if (ps .HasExited) //如果进程退出则继续 { //进程已经退出 //Console.WriteLine("进程已经退出"); } else //如果进程没有退出则继续 { //myProcess.CloseMainWindow(); //关闭主窗口 ps .Kill(); //终止进程 }
  • button2_click 时,ps.HasExited 始终返回 true。我试图在进程列表中找到 ps.ID 但已经被杀死。 Process.Start("explorer.exe") 创建另一个进程,这就是为什么在进程列表中找不到 ps.ID 的原因。有什么办法杀死由 Process.Start("explorer.exe") 创建的进程?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-02
  • 2013-12-18
  • 2022-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多