bboks.net™

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

C# | ASP.NET/C#

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

bboks.net 2011. 6. 17. 13:34

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라는 속성이 있으므로
각 속성들을 통해 프로세스를 주무를 수 있지 않을까 싶다. (안되면 뭐 말고~)


[출처] [C#] Winform 프로그래밍에서 IE 띄우기