PDA

View Full Version : آموزش: حذف Excel.exe در Task Manager



robat7
شنبه 15 آبان 1389, 15:36 عصر
سلام
وقتي در C#‎‎‎ با برنامه Excel كار مي كنيم بستن برنامه Excel در Task Manager يكي از پر دردسرترين كارهاست كد زير را در بيشتر سايت ها مي توانيد پيدا كنيد ولي متاسفانه در بيشتر موارد درست كار نمي كند


oWB.Save();
oWB.Close(null, null, null);
oXL.Workbooks.Close();
oXL.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComO bject(oXL);
System.Runtime.InteropServices.Marshal.ReleaseComO bject(oWB);
System.Runtime.InteropServices.Marshal.ReleaseComO bject(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 فراخواني نمايند.

منبع

http://www.eggheadcafe.com/community/aspnet/2/8322/excel-application-in-c-excelexe-remains-in-tm.aspx

كامياب باشيد