关闭当前 EXCEL.EXE 进程

解决方案一、

   PublicMethod.Kill(oExcelApp);   ///调用kill当前excel进程 
   
   PublicMethod.Kill()内容是: 
   
   using System.Runtime.InteropServices; 
   public class PublicMethod 
   { 
       public PublicMethod() 
       { 
           // 
           // TODO: 在此处添加构造函数逻辑 
           // 
       }

       [DllImport("User32.dll", CharSet = CharSet.Auto)] 
       public static extern int GetWindowThreadProcessId(IntPtr hwnd,out int ID); 
       public static void Kill(Excel.Application excel) 
       { 
           IntPtr t=new IntPtr(excel.Hwnd); //得到这个句柄,具体作用是得到这块内存入口 
           
           int k= 0; 
           GetWindowThreadProcessId(t,out k); //得到本进程唯一标志k 
           System.Diagnostics.Process p=System.Diagnostics.Process.GetProcessById(k); //得到对进程k的引用 
           p.Kill(); //关闭进程k 
       } 
   
   }

 【说明】
优点:此方法关闭当前Excel进程,而不是关闭所有的Excel进程。
缺点:必须获得服务器相应的权限,设置较为复杂,不易成功!


解决方案二、

        private DateTime beforeTime;            //Excel启动之前时间
        private DateTime afterTime;               //Excel启动之后时间
        //举例
        beforeTime = DateTime.Now;
        Excel.Application xlApp = new Excel.Application();
        afterTime = DateTime.Now;

        /// 
        /// 结束Excel进程
        /// 
        public void KillExcelProcess()
        {
            Process[] myProcesses;
            DateTime startTime;
            myProcesses = Process.GetProcessesByName("Excel");


            //判断进程启动时间
            foreach (Process myProcess in myProcesses)
            {
                startTime = myProcess.StartTime;

                if (startTime > beforeTime && startTime < afterTime)
                {
                    myProcess.Kill();
                }
            }
        }

 【说明】
优点:关闭Excel进程无需开设服务器权限,实现简单。
缺点:当同时操作的概率较高时,可能会错杀进程(概率较低)!


【总结】
解决方案二 基本可以满足常见项目的需求,可能更适合快速开发和部署。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值