WPF 상에서 IE를 기동한뒤에

화면이 종료되면, 기동했던 IE 페이지도 타이틀에 따라서 따로 종료해야하는 상황이 발생했다.


어떻게 제어를 해야하나...


[조건]

웹브라우져는 IE로 한정된다.

화면이 종료되는 시점에서 브라우져를 같이 종료해야한다.

종료시켜야하는 브라우져의 타이틀은 가변적이다.

  예) "우리나라 만세 [회원아이디]"


[진행]

우선, 참조설정 COM에서 아래를 추가한다.

Microsoft Internet Controls

Microsoft Shell Controls And Automation


그리고 Using 을 추가한다.

using SHDocVw;

using Shell32;


마지막으로 소스를 아래와같이 구현해보았더니, 아주 잘 작동된다.




/// <summary>

/// IE기동 (타이틀취득)

/// </summary>

protected void IECloseControlExecute()

{

    Shell shell = new Shell();

    IShellWindows windows = (SHDocVw.IShellWindows)shell.Windows();


    // 아래의 키가 포함되어있으면 브라우져를 종료한다.

    string targetKey = "우리나라 만세";

    SHDocVw.InternetExplorer ie;

    foreach (object window in windows)

    {

        ie = window as SHDocVw.InternetExplorer;

        if (ie != null &&

            string.Equals(System.IO.Path.GetFileName(ie.FullName),

            "iexplore.exe", StringComparison.CurrentCultureIgnoreCase))

        {

            if(ie.LocationName.IndexOf(targetKey) > -1)

            {

                ie.Quit();

            }

        }

    }


물론, WPF(C#) 을 베이스로 활용하였지만

소스자체는 C#이라 윈도우 기반에서도 활용 가능할것으로 보인다.


+ Recent posts