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