2023. 2. 11. 09:00ㆍVB.NET/Chrome Browser
구글 크롬에서 페이지 소스보기를 하듯이 우리도 페이지 소스보기 기능을 구현해보자. 여기까지 강좌를 따라왔으면 한두줄 수정하는 것만으로 페이지 소스보기 구현이 가능하다.
페이지 소스보기는 두가지 방식으로 만들 수 있는데 하나는 브라우저가 직접 소스보기 창을 띄워서 보여주는 것이고, 또 하나는 소스를 변수에 담아서 내가 직접 편집이 가능하도록 하는 것이다.
첫번째 소스보기 창을 띄우기 위해 디자인모드에서 툴바에 버튼을 하나 추가하자.
Name | DisplayStyle | Text |
ButtonSource | Text | S&ource |
버튼클릭 이벤트에 아래 소스를 추가한 후 실행해보자.
Private Sub ButtonSource_Click(sender As Object, e As EventArgs) Handles ButtonSource.Click
BrowserMain.ViewSource()
End Sub
아래 화면처럼 메모장이 뜨고 페이지 소스가 보이면 성공
위 화면을 보면 소스보기가 잘 되는걸 확인할 수 있다. 하지만, 이렇게 소스를 보기만 해서는 파싱을 한다든지, 소스의 특정 내용을 변경한다든지 하는 류의 작업은 할 수가 없다. 말 그대로 소스를 보기만 할 수 있는 것이다. 그러면 이제 소스를 우리 프로젝트 내부로 가져와서 직접 소스를 편집할 수 있는 기능을 구현해보자.
위와 다르게 페이지 소스를 가져오려면 ChromiumWebBrowser의 FrameLoadEnd 이벤트를 사용해야 한다. 그런데 잠깐. 이 이벤트는 지난 강좌에서 사용했었다. 지난 강좌에 포함됐던 이벤트 소스를 다시한번 보자.
Private Sub BrowserMain_FrameLoadEnd(sender As Object, e As FrameLoadEndEventArgs) Handles BrowserMain.FrameLoadEnd
If e.Frame.IsMain Then
BrowserMain.GetSourceAsync().ContinueWith(Sub()
Dim d As ControlCallBack = New ControlCallBack(AddressOf ControlSetting)
Me.Invoke(d)
End Sub)
End If
End Sub
이렇게 사용했었다. e.Frame.IsMain의 조건문을 통해 메인프레임의 로딩이 완료되면 Async 모드로 콜백함수를 호출해서 URL변경, Back, Forward 버튼의 Enabled 속성을 변경하는 기능으로 사용했는데 이 ContinumWith 함수의 파라미터로 들어있는 프로시저를 수정해야 한다.
아래와 같이 이벤트 소스를 수정하자.
Private Sub BrowserMain_FrameLoadEnd(sender As Object, e As FrameLoadEndEventArgs) Handles BrowserMain.FrameLoadEnd
If e.Frame.IsMain Then
BrowserMain.GetSourceAsync().ContinueWith(Sub(src)
Dim d As ControlCallBack = New ControlCallBack(AddressOf ControlSetting)
Me.Invoke(d)
Debug.Print(src.Result)
End Sub)
End If
End Sub
파라미터로 src가 추가됐고, src.Result로 페이지 소스를 가져오면 된다. 폼단위 전역변수를 선언해서 넣어도 되고, 어떤 식으로든 현재 페이지의 소스를 가져왔으니 이제 이 소스를 응용해서 원하는 작업을 수행하면 된다.
'VB.NET > Chrome Browser' 카테고리의 다른 글
[VB.NET] 차근차근 크롬 브라우저 만들기 - 8. 티스토리 로그인 (2/2) (1) | 2023.02.14 |
---|---|
[VB.NET] 차근차근 크롬 브라우저 만들기 - 7. 티스토리 로그인 (1/2) (1) | 2023.02.13 |
[VB.NET] 차근차근 크롬 브라우저 만들기 - 5. 자바스크립트와 통신 (1) | 2023.02.10 |
[VB.NET] 차근차근 크롬 브라우저 만들기 - 4. 자바스크립트 실행 (0) | 2023.02.09 |
[VB.NET] 차근차근 크롬 브라우저 만들기 - 3. 기본기능 (0) | 2023.02.08 |