在操作EXCEL时,看到一个方法是杀掉所有“EXCEL”进程,这样如果有打开的文档也会被关且不提示是否保存,使用者会疯掉的,下面这种方法可以只杀当前进程
Microsoft.Office.Interop.Excel.Application m_xlApp
=
new
Microsoft.Office.Interop.Excel.Application();
int m_k = m_xlApp.Hwnd;
// 进行操作
KillProcess(m_k); // 关闭进程
// 关闭的方法
[DllImport( " User32.dll " , CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
/// <summary>
/// 杀掉进程
/// </summary>
/// <param name="ID"></param>
private static void KillProcess( int ID)
{
IntPtr t = new IntPtr(ID);
int k = 0 ;
GetWindowThreadProcessId(t, out k); // 得到本进程唯一标志k
if (k != 0 )
{
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); // 得到对进程k的引用
p.Kill(); // 关闭进程k
}
int m_k = m_xlApp.Hwnd;
// 进行操作
KillProcess(m_k); // 关闭进程
// 关闭的方法
[DllImport( " User32.dll " , CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
/// <summary>
/// 杀掉进程
/// </summary>
/// <param name="ID"></param>
private static void KillProcess( int ID)
{
IntPtr t = new IntPtr(ID);
int k = 0 ;
GetWindowThreadProcessId(t, out k); // 得到本进程唯一标志k
if (k != 0 )
{
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); // 得到对进程k的引用
p.Kill(); // 关闭进程k
}
}
这样就可以操作了,在循环操作中更是好用的,以前我在导出新浪BLOG到WORD时就是杀掉所有进种的,方法好用,但不太合理,用了上面的例子感觉很好