Programing/C#

C# Excel Process Kill ( 프로세스 죽이기 )

꿀주세요 2022. 3. 12. 13:46

진짜 많이 검색해보고 나름대로 가장 심플하면서 확실한 방법을 찾은거같아서 글을 작성합니다.

 

그냥 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();
            }
        }
    }