본문 바로가기

C#의 속삭임

[C#][AxWebBrowser] AxWebBrowser 컨트롤러

* 생성

- 도구>도구 상자 항목 선택 > COM 구성 요소 에서 Microsoft Web Browser를 선택 하여 추가한다.





* document 불러 오기.

mshtml.IHTMLDocument2 doc = (mshtml.IHTMLDocument2)webBrowser1.Document;


* inputbox에 값 넣고, 버튼 클릭하기 ex) 로그인

mshtml.IHTMLDocument3 doc = this.webBrowser1.Document as mshtml.IHTMLDocument3;

                

doc.getElementById("u").innerText = "admin";

doc.getElementById("p").innerText = "admin";


doc.getElementById("login-btn").click();


* 엘레먼트를 호출하여 특정 엘레멘트 선별하기.

mshtml.IHTMLDocument3 doc = this.webBrowser1.Document as mshtml.IHTMLDocument3;

//button Tag를 모두 호출한다.

mshtml.IHTMLElementCollection elc = doc.getElementsByTagName("button");

           

//for문으로 선별한다. 

            foreach (mshtml.IHTMLElement el in elc)

            {

                

               //버튼 텍스트가 WorkOn인 녀석을 찾는다.

                if (el.innerText.Equals("Work On"))

                {

                    

             //해당 버튼을 클릭한다.

                    el.click();

                }

            }


* 특정 엘레먼트에 이벤트를 걸 필요가 있을때가 있다. 예를 들어 특정 엘레멘트의 속성 변화 이벤트가 발생하면 C#에 알려주어 특정 메소드를 실행 하도록...

mshtml.IHTMLDocument3 doc = this.webBrowser1.Document as mshtml.IHTMLDocument3;


mshtml.IHTMLElementCollection elc = doc.getElementsByTagName("div");

foreach (mshtml.IHTMLElement el in elc)

{// 모든 div 에 onpropertiychange event 등록

                        

    mshtml.HTMLElementEvents_Event elEvent;

    elEvent = (mshtml.HTMLElementEvents_Event)el;

    elEvent.onpropertychange += new mshtml.HTMLElementEvents_onpropertychangeEventHandler(delegate { dashBoardChangeCheck(el); });

                        

}


private void dashBoardChangeCheck(object sender)

{


                mshtml.IHTMLElement element = (mshtml.IHTMLElement)sender;

            

}




* AxWebBrowser의 특징중 하나가 팝업 관리가 가능하다. 팝업 발생시 특정 폼에 AxWebBrowser를 넘겨 줄수 있다.

- 브라우저의 NewWindow이벤트에 정의 해준다. 이대 새로 생성되는 Form은 CreateVMForm 이다. 입맛대로 고쳐 쓰면 된다.

        private void webBrowser1_NewWindow(object sender, DWebBrowserEvents2_NewWindow2Event e)

        {


            AxWebBrowser newWebBrowser = (AxWebBrowser)sender;

            Console.Write("Call webBrowser1_NewWindow URL : " + newWebBrowser.LocationURL);

            CreateVMForm createVMForm;

            createVMForm = new CreateVMForm();

            createVMForm.Visible = true;


            createVMForm.axWebBrowser1.RegisterAsBrowser = true;

            e.ppDisp = createVMForm.axWebBrowser1.Application;

            

            

        }



* 만약 브라우저 에러를 사용자에게 숨기고 싶다면...

webBrowser1.Silent = true;






* AxWebBrowser가 있고 그냥 WebBrowser 가 있다.

WebBrowser의 자료는 이곳이다. : http://hongal.tistory.com/68


'C#의 속삭임' 카테고리의 다른 글

[C#][WPF] 첫시작.  (0) 2014.04.23
[C#][WPF]데이터 바인딩  (0) 2014.04.22
[C#][WPF][프레임워크][MVVM] MVVM Light  (0) 2014.04.17
[C#][패턴] MVVM  (0) 2014.04.16
[C#][WebBrowser] WebBrowser 컨트롤러  (0) 2014.04.04