解决程序操作Excel后结束EXCEL.EXE的方法
1.导入命名空间:using System.Runtime.InteropServices;
2.添加API引用部分的代码,放入 class 内部:
1 [DllImport("User32.dll", CharSet = CharSet.Auto)] 2 public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
3.结束程序时,结束EXCEL.EXE进程
例:
1 int id = 0; 2 Excel.Application app = new Excel.Application(); 3 IntPtr ptr = new IntPtr(app.Hwnd); 4 GetWindowThreadProcessId(ptr, out id); 5 Process proc = Process.GetProcessById(id); 6 proc.Kill();
**注:
需要添加:Microsoft.Office.Interop.Excel
添加命名空间:
using Excel = Microsoft.Office.Interop.Excel;
using System.Diagnostics;
GetWindowThreadProcessId用法:
函数功能:该函数返回创建指定窗口线程的标识和创建窗口的进程的标识符,后一项是可选的。
函数原型:DWORD GetWindowThreadProcessld(HWND hwnd,LPDWORD lpdwProcessld);
参数:
hWnd:窗口句柄。
lpdwProcessld:接收进程标识的32位值的地址。如果这个参数不为NULL,GetWindwThreadProcessld将进程标识拷贝到这个32位值中,否则不拷贝。
返回值:返回值为创建窗口的线程标识。