终止excel.exe的进程
2015-06-29 14:20
225 查看
using System.Diagnostics; using System.Runtime.InteropServices; /// <summary> /// 获取进程ID /// </summary> /// <param name="hwnd">窗口句柄 由FindWindow获取</param> /// <param name="ID">进程ID</param> /// <returns></returns> [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID); /// <summary> /// 关闭Excel进程 /// </summary> /// <param name="excel"></param> public void KillExcel(Microsoft.Office.Interop.Excel._Application excel) { //获得句柄 IntPtr ptr = new IntPtr(excel.Hwnd); //获取进程ID int processID = 0; GetWindowThreadProcessId(ptr, out processID); //获取进程 Process process = Process.GetProcessById(processID); //关闭进程 if (!process.CloseMainWindow())//尝试关闭进程 { process.Kill();//强制关闭 } } public void Dispose() { System.Runtime.InteropServices.Marshal.ReleaseComObject(this.worksheet); this.worksheet = null; System.Runtime.InteropServices.Marshal.ReleaseComObject(this.workbook); this.workbook = null; if (this.application != null) { this.application.Quit(); //关闭Excel进程(程序异常关闭的情况下) this.KillExcel(this.application); System.Runtime.InteropServices.Marshal.ReleaseComObject(this.application); this.application = null; } }
相关文章推荐
- WMB入门之十:Java Compute节点
- ffmpeg推送,EasyDarwin转发,vlc播放 实现整个RTSP直播
- XML实体引用
- c#第5章 变量的更多内容 隐式和显式转换、枚举、结构、数组、
- oracle分组查询
- oracle分组查询
- linux中memset的正确用法
- IOS 数据存储之 Core Data详解
- linux系统下U盘挂载程序
- maven管理多模块系统
- 将sql server jdbc driver加到本地maven仓库或nexus
- oracle分组查询
- make only output error/warning message( 编译时,只输出错误信息和警告信息)
- oracle分组查询
- cocos2dx 3.x Node::schedule
- 400+考研 北京航空航天大学2系电子信息与工程学院921通信综合资料合辑
- Redis Cluster 3.0搭建与使用
- html中动态显示年月日星期时分秒
- Linux内存管理原理
- Android4.2对webview中Javascript不能调用