반응형

앞서 IE를 제어하는 방법을 정리했었는데, 그 뒤에 작업을 하다보니 winform에서 지원하는 라이브러리를 차용하기도 해야하고, WPF에서는 사용하기 조금 거시기한 면이 있어서 WPF 자체로 지원하는 브라우저로 바꾼김에 다시 정리한다.

 

 

WPF에는 webBrowser 라이브러리를 자체적으로 지원하고, 이는 document에 불친절하게 정리되어 있다. 

IE제어가 윈폼 기반 dll을 사용했던 것에 반해, wpf 기반 라이브러리 (System.Windows.Controls) 기반으로 작동하고 되어있어서 메모리 소모가 적다. (나랑은 관계없는 이야기.)

 

1. WPF 화면구성

IE를 호출해서 사용하던 이전 것과 다르게, WPF 도구상자에 webBrowser를 바로 xaml에 그려놓으면 되고, 나는 주소창/검색창과 함께 browser 화면을 띄워놨다.

 

XAML

        <Grid x:Name="browserControl" HorizontalAlignment="Left" Height="251" Margin="114,136,0,0" VerticalAlignment="Top" Width="500" Background="Black" Opacity="1">
            <WebBrowser x:Name="myBrowser" Visibility="Visible" HorizontalAlignment="Center" Height="222" Margin="0,27,0,0" VerticalAlignment="Top" Width="480"/>
            <TextBox x:Name="url" HorizontalAlignment="Left" Height="20" Margin="10,7,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="200"/>
            <Button x:Name="goUrl" Content="Go" HorizontalAlignment="Left" Margin="220,7,0,0" VerticalAlignment="Top" Width="75"/>
            <TextBox x:Name="keyword" HorizontalAlignment="Left" Height="20" Margin="310,7,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="100"/>
            <Button x:Name="goSearch" Content="search" HorizontalAlignment="Left" Margin="420,7,0,0" VerticalAlignment="Top" Width="70"/>

        </Grid>

 

2. 코드사이드

간단하다.

goUrl 버튼을 누르면 페이지로 이동

goSearch 버튼을 누르면 검색 (네이버만)

 

        private void goUrl_click(object sender, RoutedEventArgs e)
        {
            myBrowser.Navigate(url.Text);

            
        }

        private void goSearch_click(object sender, RoutedEventArgs e)
        {
            mshtml.HTMLDocument doc = (mshtml.HTMLDocument)myBrowser.Document;

            //query: 텍스트박스, sform: 서치버튼 
            //검색어 입력
            doc.getElementById("query").setAttribute("value", keyword.Text);
            //검색실행
            doc.getElementById("sform").GetType().InvokeMember("submit", System.Reflection.BindingFlags.InvokeMethod, null, doc.getElementById("sform"), null);

        }

1) 네이버 접속화면

2) 네이버 검색결과

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기