欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解析c#操作excel后关闭excel.exe的方法

程序员文章站 2023-12-20 08:40:46
于是提出了kill process的方法,目前我见过的方法多是用进程创建时间筛选excel.exe进程,然后kill 。这样的方法是不精确的,也是不安全的,通过对...
于是提出了kill process的方法,目前我见过的方法多是用进程创建时间筛选excel.exe进程,然后kill 。这样的方法是不精确的,也是不安全的,通过对网上一些关于api运用文章的阅读,我找到了更为直接精确找到这个process并kill的方法
以下就是代码        
复制代码 代码如下:

using   system.runtime.interopservices;  

  [dllimport("user32.dll",   charset   =   charset.auto)]  
  public   static   extern   int   getwindowthreadprocessid(intptr   hwnd,   out   int   id);  
  protected   void   button1_click(object   sender,   eventargs   e)  
  {  
      excel.applicationclass   excel   =   new   microsoft.office.interop.excel.applicationclass();  
      excel.workbooks.open("d:\aaa.xls",   type.missing,   type.missing,   type.missing,   type.missing,   type.missing,   type.missing,   type.missing,   type.missing,   type.missing,   type.missing,   type.missing,   type.missing,   type.missing,   type.missing);  
      intptr   t   =   new   intptr(excel.hwnd);  
      int   k   =   0;  
      getwindowthreadprocessid(t,   out   k);  
      system.diagnostics.process   p   =   system.diagnostics.process.getprocessbyid(k);  
      p.kill();                  
   }

以上代码百分百成功的关闭excel.exe进程
我的做法是结合两者,先释放资源,然后关闭进程。
同时网上说避免使用gc.collect 方法 (),因为会导致整个clr进行gc,影响你的性能.所以我也没有调用gc.collect

上一篇:

下一篇: