关闭

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

标签: 控制台c#namespace杀死进程
668人阅读 评论(0) 收藏 举报
分类:

先贴.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();

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3899次
    • 积分:154
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    最新评论