진짜 많이 검색해보고 나름대로 가장 심플하면서 확실한 방법을 찾은거같아서 글을 작성합니다.
그냥 Excel.EXE 프로세스를 죽이게 되면 다른 실행되있는 엑셀파일도 전부 날아가기때문에
엑셀의 PID(Process ID)를 획득 후 해당 ID에 대해서만 Kill하게 됩니다.
예제)
class Program { [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); static void Main(string[] args) { Microsoft.Office.Interop.Excel.Application excel = null; Workbook workbook = null; Worksheet worksheet = null; uint processId = 0; excel = new Microsoft.Office.Interop.Excel.Application(); // 엑셀 내용 Start º º º º º // 엑셀 내용 End GetWindowThreadProcessId(new IntPtr(excel.Hwnd), out processId); //PID 획득 workbook .Save(); workbook.Close(Type.Missing, Type.Missing, Type.Missing); excel.Quit(); if (processId != 0) { System.Diagnostics.Process excelProcess = System.Diagnostics.Process.GetProcessById((int)processId); excelProcess.CloseMainWindow(); excelProcess.Refresh(); excelProcess.Kill(); } } } |
'Programing > C#' 카테고리의 다른 글
C# 디버깅시 Cross Thread 임시 해결방법 (0) | 2022.05.09 |
---|---|
C# ini 파일 읽기 쓰기 (0) | 2022.04.22 |
C# Excel 프로세스 해제 (0) | 2022.03.12 |
C# LOG파일 생성 (0) | 2022.03.12 |
C# CrossThread Error 해결 (0) | 2022.02.21 |