C# 操作进程

/// <summary>
/// 启动进程
/// </summary>
/// <param name="path">路径</param>
private void StartProcesses(string path)
{
    try
    {
        if (path != "")
        {
            Process.Start(path);
        }
    }
    catch (Exception ex)
    {
    }
}

/// <summary>
/// 关闭进程
/// </summary>
/// <param name="path">路径</param>
private void StopProcesses(string path)
{
    try
    {
        if (path != "")
        {
            string name = Path.GetFileNameWithoutExtension(path);
            //根据名字关闭相关进程
            Process[] p = Process.GetProcessesByName(name);
            for (int i = 0; i < p.Length; i++)
            {
                p[i].Kill();
                p[i].WaitForExit();
            }
        }
    }
    catch (Exception ex)
    {
    }
}

或许有些程序用上面的StopProcesses方法,关闭不完全,从网上参考了cmd命令关闭程序

/// <summary>
/// 运行DOS命令
/// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID
/// </summary>
/// <param name="command"></param>
/// <returns></returns>
public string RunCmd(string command)
{
    //实例一个Process类,启动一个独立进程
    System.Diagnostics.Process p = new System.Diagnostics.Process();

    //Process类有一个StartInfo属性,这个是ProcessStartInfo类,包括了一些属性和方法,下面我们用到了他的几个属性:
    p.StartInfo.FileName = "cmd.exe";           //设定程序名
    p.StartInfo.Arguments = "/c " + command;    //设定程式执行參數
    p.StartInfo.UseShellExecute = false;        //关闭Shell的使用
    p.StartInfo.RedirectStandardInput = true;   //重定向标准输入
    p.StartInfo.RedirectStandardOutput = true;  //重定向标准输出
    p.StartInfo.RedirectStandardError = true;   //重定向错误输出
    p.StartInfo.CreateNoWindow = true;          //设置不显示窗口
    p.Start();   //启动

    //p.StandardInput.WriteLine(command);       //也可以用这种方式输入要执行的命令
    //p.StandardInput.WriteLine("exit");        //不过要记得加上Exit要不然下一行程式执行的时候会当机
    return p.StandardOutput.ReadToEnd();        //从输出流取得命令执行结果
}

有了这个方法,我们就可以尝试根据进程ID来关闭进程了,可以这样关闭程序

/// <summary>
/// CMD命令关闭程序
/// </summary>
/// <param name="path">路径</param>
private void CmdCloseProcess(string path)
{
    if (path != "")
    {
        string name = Path.GetFileNameWithoutExtension(path);
        Process[] p = Process.GetProcessesByName(name);
        foreach (Process pre in p)
        {
            int id = pre.Id;
            this.RunCmd("taskkill /pid " + id);
        }
    }
}


 


 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值