C#杀死手动关闭控制台程序,遗留的进程

先贴.cs文件,再写调用方法:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;


namespace VMAIMComputingNode
{
    class ConsolControl
    {


        private delegate bool ConsoleCtrlDelegate(int dwCtrlType);
        const int CTRL_CLOSE_EVENT = 2;//关闭控制台事件
  
        ConsoleCtrlDelegate newDelegate = new ConsoleCtrlDelegate(HandlerRoutine);
     
        [DllImport("kernel32.dll")]
        private static extern bool SetConsoleCtrlHandler(ConsoleCtrlDelegate HandlerRoutine,bool Add);


        public bool KillCameraPro()
        {


            if (!SetConsoleCtrlHandler(newDelegate, true))
            {
                Console.WriteLine("API注入失败,不能自动关闭camera进程");
                return false;
            }


            return true;
        }


        static bool HandlerRoutine(int CtrlType)
        {
            switch (CtrlType)
            {
                case CTRL_CLOSE_EVENT:       //用户要关闭Console了
                                             // Console.WriteLine();
                    Process[] p = Process.GetProcessesByName(Path.GetFileNameWithoutExtension("CameraData.exe"));
                    foreach (Process pp in p)
                    {
                        pp.Kill();
                    }
                    Console.WriteLine("任务还没有完成,确认要退出吗?(Y/N)");
                    ConsoleKeyInfo ki = Console.ReadKey();
                    return ki.Key == ConsoleKey.Y;
                default:
                    return true;
            }
        }
    }
}


调用方法:

前提,同一命名空间中

 ConsolControl cc = new ConsolControl();
           bool resullt= cc.KillCameraPro();

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sanningjing/article/details/51555602
个人分类: C#
上一篇C#文件创建与使用 冲突问题
下一篇xml配置文件LOAD
想对作者说点什么? 我来说一句

C# 关闭进程 KillProcess

2009年01月13日 43KB 下载

没有更多推荐了,返回首页

关闭
关闭