본문 바로가기

C#

C#으로 실행중인 EDGE를 제어해보자

반응형

C#을 사용하여 실행 중인 Microsoft Edge 브라우저의 타이틀을 가져오려면, System.Diagnostics 네임스페이스의 Process 클래스를 사용할 수 있습니다. 

 

System.Diagnostics 네임스페이스

시스템 프로세스, 이벤트 로그 및 성능 카운터와 상호 작용할 수 있는 클래스를 제공합니다.

learn.microsoft.com

using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // Edge 브라우저 프로세스 이름
        string edgeProcessName = "msedge";

        // 실행 중인 모든 Edge 프로세스 가져오기
        Process[] edgeProcesses = Process.GetProcessesByName(edgeProcessName);

        foreach (Process edgeProcess in edgeProcesses)
        {
            // Edge 브라우저의 타이틀 출력
            Console.WriteLine($"Edge 브라우저 타이틀: {edgeProcess.MainWindowTitle}");
        }
    }
}

위의 코드를 사용하면 브라우져의 타이틀을 취득할수 있습니다.

 

그리고 특정 타이틀을 가지고 있는 브라우저 프로세스를 종료하려면, Process 클래스를 사용하여 프로세스 목록을 확인하고 원하는 조건에 맞는 프로세스를 종료할 수 있습니다.

 

Process 클래스 (System.Diagnostics)

로컬 및 원격 프로세스에 대한 액세스를 제공하고 로컬 시스템 프로세스를 시작하고 중지할 수 있습니다.

learn.microsoft.com

using System;
using System.Diagnostics;

class Program
{
    static void Main()
    {
        // 종료할 브라우저의 타이틀
        string targetTitle = "샘플";

        // Edge 브라우저 프로세스 이름
        string edgeProcessName = "msedge";

        // 실행 중인 모든 Edge 프로세스 가져오기
        Process[] edgeProcesses = Process.GetProcessesByName(edgeProcessName);

        foreach (Process edgeProcess in edgeProcesses)
        {
            // 현재 프로세스의 타이틀과 목표 타이틀 비교
            if (edgeProcess.MainWindowTitle.Contains(targetTitle))
            {
                // 프로세스 종료
                edgeProcess.Kill();
                Console.WriteLine($"'{targetTitle}' 타이틀을 가진 Edge 브라우저를 종료했습니다.");
            }
        }
    }
}

위의 예제에서는 "샘플" 이라는 타이틀을 가지고있는 EDGE브라우져의 프로세스를 종료하는 내용을 다루고 있습니다.

또한, UI Automation을 사용하여 브라우저의 타이틀을 가져오고 특정 타이틀을 가진 브라우저를 종료하는 좀 더 복잡한 작업도 가능합니다. UI Automation은 사용자 인터페이스와 상호 작용하고 정보를 검색하는 데 사용되는 특수한 API입니다.

먼저, System.Windows.Automation 네임스페이스를 사용하여 UI Automation을 활용할 수 있습니다. 
※UIAutomation은, 참조-어셈블리에 있습니다.
아래는 Edge 브라우저의 타이틀을 가져오고, 특정 타이틀을 가진 브라우저를 종료하는 예제 코드입니다.

using System;
using System.Windows.Automation;

class Program
{
    static void Main()
    {
        // Edge 브라우저의 타이틀
        string edgeTitle = "Microsoft Edge";

        // Edge 브라우저 프로세스를 찾기 위한 AutomationElement
        AutomationElement edgeElement = null;

        // 모든 프로세스 가져오기
        AutomationElementCollection processes = AutomationElement.RootElement.FindAll(TreeScope.Children, Condition.TrueCondition);

        foreach (AutomationElement process in processes)
        {
            // Edge 브라우저 프로세스인지 확인
            if (process.Current.Name.Contains(edgeTitle))
            {
                edgeElement = process;
                break;
            }
        }

        if (edgeElement != null)
        {
            // Edge 브라우저의 타이틀 가져오기
            string edgeBrowserTitle = edgeElement.Current.Name;
            Console.WriteLine($"Edge 브라우저 타이틀: {edgeBrowserTitle}");

            // 특정 타이틀을 가진 브라우저 종료
            if (edgeBrowserTitle.Contains("샘플"))
            {
                edgeElement.SetFocus(); // 포커스 설정 (필요한 경우)
                edgeElement.SetFocus(); // 두 번 호출 (필요한 경우)

                // Alt + F4를 이용하여 종료
                SendKeys.SendWait("%{F4}");

                Console.WriteLine("'샘플' 타이틀을 가진 Edge 브라우저를 종료했습니다.");
            }
        }
        else
        {
            Console.WriteLine("Edge 브라우저를 찾을 수 없습니다.");
        }
    }
}

이 코드는 AutomationElement를 사용하여 프로세스를 찾고, 해당 프로세스의 타이틀을 가져온 다음, 특정 타이틀을 가진 경우 해당 브라우저를 종료하는 방법을 보여줍니다. 
SendKeys를 사용하여 Alt + F4를 보내어 브라우저를 닫을 수 있습니다.

 

반응형