세이박스

VB로 WebBrowser 컨트롤의 HTML 제어

응용프로그래밍
 
VB로 WebBrowser 컨트롤의 HTML 제어

  작성자 : 손민창
  작성일 : 2006/12/01

 간간히 질문 올라오는것 같아서 간략하게 정리했습니다.
 
 
 
WebBrowser 컨트롤을 이용해서 VB에서 웹페이지 보여줄때 그 웹페이지를 VB에서 제어하는 몇가지 예제입니다.
(이 WebBrowser 컨트롤 이용하려면  Microsoft Internet Controls을 구성요소에서 추가해주는것 잊지 마시고요)
 
 
 
VB 코드 입니다.
 
Private Sub Command1_Click()
    WebBrowser1.Navigate App.Path & "\test.html"
End Sub
 
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
 
    On Error GoTo WebBrowser1_DocumentComplete_Error
 
   '// 첫번째 자바스크립트 내용 가져오기
    MsgBox WebBrowser1.Document.script-xs.Item(0).innerHTML
   
    '// 두번째 자바스크립트 내용 가져오기
    MsgBox WebBrowser1.Document.script-xs.Item(1).innerHTML
   
    '// id 값이 spanid 인것 가져옴
    MsgBox WebBrowser1.Document.getElementsByName("spanid")(0).innerHTML
   
    '// 폼 속성들 가져오기 가져오기
    MsgBox WebBrowser1.Document.Forms(0).Name
    MsgBox WebBrowser1.Document.Forms(0).method
   
    '// 폼 요소 가져오기 (자바스크립트에서 이용하듯이 사용)
    MsgBox WebBrowser1.Document.Forms(0).user_name.Value
    MsgBox WebBrowser1.Document.Forms(0).homepage.Value
   
    '// 값 바꾸기
    WebBrowser1.Document.Forms(0).homepage.Value = "http://www.empas.com"
       
    Dim tmpObj As HTMLDocument
    Set tmpObj = WebBrowser1.Document
 
 
    On Error GoTo 0
    Exit Sub
 
WebBrowser1_DocumentComplete_Error:
 
End Sub
 
 
 
다음은 html 내용입니다.
 
<html>
<head></head>
<script-x language='xxjavascript-x'>
    alert!('첫번째 스크립트입니다.');
    self.close();
</script-x>
<script-x language='xxjavascript-x'>
    alert!('두번재 스크립트 입니다.');
</script-x>
 
<body>
<span id=spanid>하하하</span>
 
<form name=f1 method=post>
<input type=text name=user_name value="손민창">
<input type=text name=homepage value="http://www.mungchung.com">
</form>
</body>
</html>
 
 
 
 
 
 
워낙 간단한 예제들이라 별다른 설명은 필요없을듯하네요...
 
VB 코드를 보면 대부분 WebBrowser1.Document 을 통해서 HTML 코드로 접근합니다.
접근 하는 방식은 xxJavaScript-x랑 비슷합니다.(거의 똑같다고 봐야하나 -_-;;)
이 WebBrowser1.Document가 자바스크립트로 나타내자면 document랑 똑같습니다.
 
예를 들자면 f1 폼에서 homepage의 값(value)를 자바스크립트로 값확인하려면
alert!(document.forms[0].homepage.value) 입니다. 이것 VB로 나타낸게
WebBrowser1.Document.Forms(0).homepage.Value 입니다. 거의 유사하지요.. -_-;
 
그 외의 다른 몇가지 예제들도 자바스크립트로 접근한 방식처럼 VB로 접근하면 됩니다.
 
 
 
헌데 VB에서 WebBrowser1.Document 까지 적은후 점(.)을 찍으면 속성이나 이벤트등이 보여야하는데
나타나지가 않아서 어떤 속성과 이벤트들이 있는지 알수가 없습니다.
이것을 알고자 한다면 아래처럼 하면 됩니다.
 
1. Microsoft HTML Object Library 을 참조로 추가한다.
 
2. 임시변수(tmpObj)를 만든다.

3. 이렇게 하면 WebBrowser1.Document 다음에 점찍으면 속성과 이벤트들이 보입니다.
 
아시겠지만 위의 코드대로 하면 WebBrowser1.Document 객체를 tmpObj 객체로 할당하면
tmpObj.Forms(0).homepage.Value ..이렇게 코딩해도 됩니다.