[C#] 확장형 브라우져 AxWebBrowser Extended Browser(확장형 webbrowser)

개발 노트/C#  2012.10.22 18:16



안녕하세요 명월입니다.

이번 포스팅에 소개 할 객체는 확장형 Webbrowser 입니다. 기본적으로 window Form을 만들면 webbrowser 객체가 주어집니다.

 

 

위 웹브라우져는 간단한 브라우져 만들기던가 단순히 틀을 만들기에는 충분하나 Scrapping 을 하거나 Web 객체를 사용할 때(후킹 포함)는 아무래도 객체가 부족합니다.

 

그래서 Com 속성을 보면 확장형 브라우져 AxWebBrowser Extended Browser 을 사용할 수 있습니다.그럼 사용법을 확인 하도록 하겠습니다.

 

 

 

 

이걸 드래그 하면 코드가 자동으로 생성됩니다.

 

 

여기서 Webbrowser 랑 가장 차별화 된 팝업창 제어 구분을 살펴 보도록 하겠습니다.

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Text;
  4 using System.Windows.Forms;
  5 using System.Drawing;
  6
  7 namespace Blog20121022
  8 {
  9     class Program : Form
10     {
11         private AxSHDocVw.AxWebBrowser axWebBrowser1;
12         [STAThread]
13         static void Main(string[] args)
14         {
15             Program p = new Program();
16             Application.Run(p);
17         }
18         public Program() {
19             this.Text = "명월 브라우져";
20             InitializeComponent();
21             this.Load += new EventHandler(Program_Load);
22             axWebBrowser1.NewWindow2 += new AxSHDocVw.DWebBrowserEvents2_NewWindow2EventHandler(axWebBrowser1_NewWindow2);
23         }
24
25         void Program_Load(object sender, EventArgs e)
26         {
27             axWebBrowser1.Navigate("www.naver.com");
28         }
29
30         void axWebBrowser1_NewWindow2(object sender, AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
31         {
32             Program p = new Program();
33             p.Show();
34             e.ppDisp = p.axWebBrowser1.Application;
35         }
36         private void InitializeComponent()
37         {
38             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Program));
39             this.axWebBrowser1 = new AxSHDocVw.AxWebBrowser();
40             ((System.ComponentModel.ISupportInitialize)(this.axWebBrowser1)).BeginInit();
41             this.SuspendLayout();
42             //
43             // axWebBrowser1
44             //
45             this.axWebBrowser1.Enabled = true;
46             this.axWebBrowser1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axWebBrowser1.OcxState")));
47             this.axWebBrowser1.Dock = DockStyle.Fill;
48             //
49             // Program
50             //
51             this.ClientSize = new System.Drawing.Size(292, 266);
52             this.Controls.Add(this.axWebBrowser1);
53             this.Name = "Program";
54             ((System.ComponentModel.ISupportInitialize)(this.axWebBrowser1)).EndInit();
55             this.ResumeLayout(false);
56         }
57     }
58 }
59


  

 

보시는 바와 같이 팝업창까지 제어가 됩니다.

 

참고 파일 : Blog20121022.zip


댓글 5개가 달렸습니다.
댓글쓰기
  1. travel34
    2013.10.14 11:33 신고 |  수정/삭제  댓글쓰기

    안녕하세요.

    좋은글 감사합니다. 다름이 아니라 부모 윈폼이 닫힐경우.. 팝업창은 남게 할 수 있나요??

    이것저것 해봤는데.. 너무 어렵습니다..ㅜ

    • 明月 v명월v
      2013.10.15 23:32 신고 |  수정/삭제

      안녕하세요... 방문 감사합니다...
      부모 폼이 닫길 경우 자식폼이 닫기는데 그건 윈도우 메시지 떄문에 그렇습니다. 모든 메시지들은 최상의 부모의 메시지로 부터 동기화가 되어있기때문에 그 주체가 닫기면 아래 자식 메시지들도 연속으로 PostNCDestory 가 호출 되는 형식이지요....

      그렇다면 전제를 바꾸어서 부모를 독립적으로 생성하면 어떨까요..
      호출한 주체가 닫겨도 그 팝업창은 닫기지 않습니다...^^

      이해가 안되시면 메일이나 쪽지주세요... 예제 만들겠습니다.

  2. 이정훈
    2014.08.18 19:23 신고 |  수정/삭제  댓글쓰기

    안녕하세요 많은 강좌 잘 보고 있습니다
    해당 강좌 따라 하다 보니깐
    Program p = new Program(); p.Show(); e.ppDisp = p.axWebBrowser1.Application; 이부분이 뭔지를 모르겠어요
    닷넷 2010 버전으로 따라 하고 있는데 WindowsFormsApplication1.Program 정적 형식의 변수를 선언할 수 없습니다.
    라고 에러가 뜨네요..ㅠ.ㅠ
    답변 부탁드릴게요

  3. 이정훈
    2014.08.18 19:25 신고 |  수정/삭제  댓글쓰기

    아 클래스 이름이였네요..;;;;;;;; 죄송합니다.ㅎㅎ

  4. jyminc
    2017.06.15 15:38 신고 |  수정/삭제  댓글쓰기

    안녕하세요. 좋은글 감사합니다.
    올려주신 소스를 실행해보았는데요. 올려주신내용과 동일하게 작동을 안하네요.
    NewWindow2이벤트가 실행이 안됩니다.
    window.showModalDialog 로 띄운 팝업을 제어(DOM)하고 싶은데.. 방법을 못찾고 있습니다..ㅜㅜ