►index

     スポンサーサイト

    --------

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

     VB.NET WebBrowserコントロールを使わずにHTMLDocumentを利用する方法

    2013-07-20

    こんなやり方があるなんて、今まで知らずに生きてきてすごい損しました(笑)
    ブログ「
    全ては時の中に…」で、解説されていたので、嬉しくなって自分のブログにメモさせて頂きました。

    《事前準備》
    1.参照設定を追加する。
    1)メニューバーの[プロジェクト]-[参照設定の追加]を選択する。
    2)[.NET]タグを選択し、一覧から「Microsoft.mshtml」を選択し、[OK]ボタンを押します。

     

    Imports System
    Imports System.IO
    Imports System.Net
    Imports System.Text

    Public Class SampleHTML
    Public Shared Sub main()
    LoadHTML("http://blog.livedoor.jp/akf0/archives/51221988.html")
    End Sub

    Private Sub LoadHTML(ByVal url As String)
    Dim wc As New WebClient()
    Try
    Dim st As Stream = wc.OpenRead(url)
    Dim enc As Encoding = Encoding.GetEncoding("EUC-JP")
    Dim sr As StreamReader = New StreamReader(st, enc)
    Dim html As String
    Dim msdoc As New mshtml.HTMLDocument

    html = sr.ReadToEnd()

    '以下は、どちらの方法でも可能
    '①IHTMLDocument2をデータ型とする変数を宣言して処理する
    Dim imsdoc As mshtml.IHTMLDocument2
    imsdoc = CType(msdoc, mshtml.IHTMLDocument2)
    imsdoc.write(html)
    For Each link As mshtml.IHTMLElement2 In imsdoc.links
    Debug.WriteLine(link.GetAttribute("href"))
    Next
    System.Runtime.InteropServices.Marshal.ReleaseComObject(imsdoc)
    imsdoc = Nothing

    '②IHTMLDocument2をデータ型とする変数を宣言せずに処理する
    'CType(msdoc, mshtml.IHTMLDocument2).write(html)
    'For Each link As mshtml.IHTMLElement2 In CType(msdoc, mshtml.IHTMLDocument2).links
    ' Debug.WriteLine(link.GetAttribute("href"))
    'Next

    System.Runtime.InteropServices.Marshal.ReleaseComObject(msdoc)
    msdoc = Nothing

    sr.Close()
    st.Close()
    Catch ex As Exception
    Debug.WriteLine(ex.Message)
    Finally
    wc.Dispose()
    End Try
    End Sub
    End Class

    トラックバック

    コメントの投稿

    非公開コメント

    PR
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。