본문 바로가기
C#.Net

C# Winform 프로그래밍에서 IE 띄우기

by 호야호잇 2020. 2. 27.

IE를 띄우려면 2가지 방법이 있다.
Process 클래스를 이용한 방법과 System32폴더에 존재하는 SHDocVw.dll을 참조해서 사용하는 것이다.

첫째 Process 클래스를 이용한 방법을 알아보자.
오나전 쉽다. 아래 코드를 보면 이해가 될 것이다.
여기서 Process 클래스의 WaitForExit(); 함수를 호출하면 Modal형태로 띄울 수 있게된다.
------------------------------------------------------------------------------------------------------------
        private void button1_Click(object sender, EventArgs e)
        {
            ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
            startInfo.Arguments = "http://www.naver.com";

            Process browser = new Process();           
            browser.StartInfo = startInfo;
            browser.Start();
            browser.WaitForExit();           
        }
------------------------------------------------------------------------------------------------------------

둘째 SHDocVw.dll를 참조한 방법을 살펴보자.
 1. System32 폴더에서 SHDocVw.dll를 찾아 참조를 한다.
 2. 그리고 아래 샘플 코드를 보면 이해가 될 것이라 생각한다.
 
  - (예1) 브라우저로 창을 띄움
------------------------------------------------------------------------------------------------------------
            object vPost, vHeaders, vFlags, vTargetFrame, vUrl;
            string cPostData;
            vFlags = null;
            vTargetFrame = null;
            vUrl = "http://localhost/testpage.asp";
            vHeaders = "Content-Type: application/x-www-form-urlencoded" + Convert.ToChar(10) + Convert.ToChar(13);
            cPostData = "test1=1&test2=2&test3=3";
            vPost = ASCIIEncoding.ASCII.GetBytes(cPostData);

            SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
            ie.Visible = true;
            ie.Navigate2(ref vUrl, ref vFlags, ref vTargetFrame, ref vPost, ref vHeaders);
------------------------------------------------------------------------------------------------------------
  - (예2) 팝업(팝업형태의브라우저)으로 창을 띄움
    a. 빨갛게 되어있는 소스만 틀리므로 그부분을 참고한다.
    b. SHDocVw.IWebBrowserApp 속성은 더 있는데 어떻게 써야할지는 아직 잘 모르겠다~ (모르면 구글링을 해보세요)
------------------------------------------------------------------------------------------------------------
            object vPost, vHeaders, vFlags, vTargetFrame, vUrl;
            string cPostData;
            vFlags = null;
            vTargetFrame = null;
            vUrl = "http://localhost/testpage.asp";
            vHeaders = "Content-Type: application/x-www-form-urlencoded" + Convert.ToChar(10) + Convert.ToChar(13);
            cPostData = "test1=1&test2=2&test3=3";
            vPost = ASCIIEncoding.ASCII.GetBytes(cPostData);

            SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
            SHDocVw.IWebBrowserApp WebBro = (SHDocVw.IWebBrowserApp)ie;
            WebBro.Height = 500;  // 세로 길이
            WebBro.Width = 500;   // 가로 길이
            WebBro.ToolBar = 0;
            WebBro.Visible = true;
            WebBro.Navigate(vUrl.ToString(), ref vFlags, ref vTargetFrame, ref vPost, ref vHeaders);
------------------------------------------------------------------------------------------------------------

아무튼 위와 같은 코드를 통해 IE를 띄울 수 있으며
Process에서는 MainWindowHandle 가지고 있고 SHDocVw.InternetExplorer 클래스 또한 HWND라는 속성이 있으므로
각 속성들을 통해 프로세스를 주무를 수 있지 않을까 싶다. (안되면 뭐 말고~)



출처: https://bboks.net/275 [bboks.net™ :: Life is SELF - Be the primary actor in your LIFE]