سلام
وقتي در C#‎‎‎‎ با برنامه Excel كار مي كنيم بستن برنامه Excel در Task Manager يكي از پر دردسرترين كارهاست كد زير را در بيشتر سايت ها مي توانيد پيدا كنيد ولي متاسفانه در بيشتر موارد درست كار نمي كند

oWB.Save();
oWB.Close(null, null, null);
oXL.Workbooks.Close();
oXL.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);


ولي با مجموعه كد زير برنامه excel.exe قطعا بسته خواهد شد

using System.Diagnostics;
using System.Collections;



System.Collections.Hashtable myHashtable;


قبل از باز نمودن برنامه excel روتين زير را فراخواني نماييد

publicvoid CheckExcellProcesses()
{
Process[] AllProcesses = Process.GetProcessesByName("excel");
myHashtable = newHashtable();
int iCount = 0;
foreach ( Process ExcelProcess in AllProcesses)
{
myHashtable.Add(ExcelProcess.Id, iCount);
iCount = iCount + 1;
}
}


در پايان براي حذف برنامه excel.exe در task manager برنامه زير را فراخواني نماييد


publicvoid KillXl()
{

Process[] AllProcess = Process.GetProcessesByName("excel");
foreach (Process ExcelProcess in AllProcess)
{
if (myHashtable.ContainsKey(ExcelProcess.Id) == false)
ExcelProcess.Kill();
}
AllProcess = null;
}


دوستاني كه با VB.Net كار مي كنند مي توانند مجموعه روتين هاي فوق را در يك dll به زبان C#‎‎‎‎ قرار دهند و در موقع لازم روتين هاي را از dll فراخواني نمايند.

منبع

كامياب باشيد