VB6で作ったブラウザでHTMLファイルをダウンロードするプログラム例


トゥルー  2007-03-27 03:27:42  No: 135878

現在、私は、VB6でブラウザを作成しています。
バージョンはラーニング・エディションです。
ブラウザは、だいたい出来上がったのですが、HTMLのファイルの
ダウンロードのプルグラムがどのように作って良い物か困っています。
誰か、知っている方は、教えてください。
できれば、プログラム例をお願いします。


haru  2007-03-27 15:57:59  No: 135879

ここの掲示版の一番上にある「掲示板の全トピックから単語:」  で
html をキーしてサーチする。

または
下記の  VBレスキュー(花ちゃん)  さんのホームページの中の

「カテゴリ別サンプル一覧」「その他のコントロール関係」
指定のURLのHTMLファイルをダウンロードする   インターネット トランスファ (Inet)コントロール の使用例

http://hanatyan.sakura.ne.jp/


トゥルー  2007-03-28 04:12:36  No: 135880

haruさんお忙しいところすみません。
今日、半日時間を使ってしまっていろいろホームページを探しましたが
思うように進んでいません。WebBrowser1.Documentの所がいいのでは、
ないかとキーポイントになっていますが、いまだにわかりません。
ちなみに、インターネット トランスファ (Inet)コントロールを
調べましたが、ラーニング・エディションでは、このコーポネンツは、
ありませんでした。
いちばんひっかかるのが、WebBrowser1.Documentの所です。ただし、
このホームページがありましたので、猿真似で動かそうとしましたが、
ユーザー定義の所が理解不足でだめでした。たぶんここを
使いこなせば、できるかも(?)しませんが、持っているマニュアルの
辞典には、WebBrowser1の所が記載されていません。
途中でたいぎくなって酒を飲んでしまいました。
WebBrowser1.Documentの所の.Documentの指定の仕方、引数などの
情報をよろしくお願いします。又別の方法があれば教えてください。
トゥルーより、


魔界の仮面弁士  2007-03-28 05:16:04  No: 135881

> ブラウザは、だいたい出来上がったのですが
HTML表示機能を自作した、という意味でしょうか。
それとも、WebBrowserコントロールを用いているのでしょうか?

> プルグラム
「プログラム」ですね。

> 途中でたいぎくなって酒を飲んでしまいました。
たいぎくなる、という言葉の意味がわかりませんでした…。(汗
(googleったら、中国・四国・九州あたりの言葉のようで)

> HTMLのファイルのダウンロード

WebBrowser に表示させるだけなら、Navigate メソッドが使えます。
ファイルとして取得する必要があるなら、こんな感じで如何でしょう。

Private Sub Command1_Click()
    Dim URL As String
    Dim FilePath As String
    URL = "http://www.urabe-taikando.co.jp/manabu/vitamin/vb6.html"
    FilePath = "C:\Sample.html"
    
    Dim o As Object
    Set o = WebObject()
    If o Is Nothing Then
        MsgBox "ダウンロードできません"
        Exit Sub
    End If
    
    o.Open "GET", URL, False
    o.send
    If o.Status >= 200 And o.Status < 300 Then
        Dim B() As Byte
        B = o.responseBody
        Dim FNo As Integer
        FNo = FreeFile(0)
        Open FilePath For Output As #FNo
        Close #FNo
        Open FilePath For Binary As #FNo
        Put #FNo, , B
        Close #FNo
        MsgBox "ダウンロード成功"
    Else
        MsgBox "ダウンロード失敗(" & CStr(o.Status) & ")" & o.statusText
    End If
End Sub

Private Function WebObject() As Object
    Dim ProgId As Variant
    
    On Error Resume Next
    For Each ProgId In Array( _
            "MSXML2.XMLHTTP.6.0", _
            "MSXML2.XMLHTTP.5.0", _
            "MSXML2.XMLHTTP.4.0", _
            "MSXML2.XMLHTTP.3.0", _
            "MSXML2.XMLHTTP.2.6", _
            "MSXML2.XMLHTTP", _
            "Microsoft.XMLHTTP")
        Set WebObject = CreateObject(ProgId)
        If Err.Number = 0 Then
            Exit Function
        Else
            Err.Clear
        End If
    Next
    Set WebObject = Nothing
End Function


トゥルー  2007-03-28 23:48:32  No: 135882

魔界の仮面弁士さん、ありがどうございました。
上記の方法でHtmlは、保存することがでいました。
ただ、困ったのは、vb6.htmlの保存ができますが、
画像などが、保存できました。
今回、プログラムの目的は、Htmlだけではなく、下記の内容を
満たしているプルグラムでした。タイトルと少し内容がことなりますが
よろしくお願いします。

(1)vb6.htmlは、保存できましたが、Htmlについている画像などの
保存ができなくて困っています。vb6.Htmlの画像などを
ホームページといっしょに、保存できることです。
(2)http://www.fmworld.net/  などのHtmlのファイル名が
記述されて無いアドレスの場合、(1)と同じように
Htmlと画像などを保存のしかたです。
もし、よろしければ教えてください。


通ってみた  2007-03-29 02:18:22  No: 135883

>画像などが、保存できました。

よかったですね・・・


haru  2007-03-29 02:48:53  No: 135884

せっかくHTMLを保存出来るサンプルコードまで書いて頂いたのですから
もう少し自分でこれを発展させて見たら如何でしょうか。

1.取得したhtmlファイルの内容から保存したい画像のリンクを取る。
    ( .gif  .jpg  など)
2.    URL と  FilePath  を画像用に書き換える。

1.に関してもここの掲示板で  WebBrowser  をキーにして探せば
    サンプルがあると思います。


トゥルー  2007-03-29 05:38:39  No: 135885

大変、わがままですみませんが、何をすべきかと言う精神論ではなくて、
こうるれば、いいとゆうことですのでよろしくお願いします。
元々、東京にいたころ、MS−DOSの頃のプログラマーで
MS−DOSのことは、勉強しましたが、
WindowsのVB6は、まだ初心者ですので、よろしくお願いします。
すみません。自分で深く反省してます。教えてください。


haru  2007-03-29 06:25:10  No: 135886

要するにサンプルだけ欲しくて自分では試行錯誤しないと言う事?
少しは考えなければプログラムは出来ませんよ!  
さようなら.......


魔界の仮面弁士  2007-03-29 11:20:51  No: 135887

> vb6.Htmlの画像などをホームページといっしょに、保存できることです。
そういうことは、最初に書きましょうよ。(^_^;)
情報を小出しにしても、回りくどいだけですし。

Private Sub Command1_Click()
    Dim URL As String
    Dim FilePath As String
    URL = "http://www.nmnweb.net/suppli/vb5.html"
    FilePath = "C:\Sample.mht"

    Dim o As Object
    Set o = CreateObject("CDO.Message")
    o.CreateMHTMLBody URL
    o.GetStream().SaveToFile FilePath
End Sub

> Htmlのファイル名が記述されて無いアドレスの場合、
この場合、URL アドレスの表記云々は関係無いのでは…。

> MS−DOSのことは、勉強しましたが、
> WindowsのVB6は、まだ初心者ですので
もしかして、Visual Basic for MS-DOS の経験者でしょうか?


トゥルー  2007-03-30 04:18:05  No: 135888

返事が遅れてすみません。魔界の仮面弁士さんありがとうございました。
今日、一日プロシジャー(モジュール)に格闘していて
返事遅れてすみません。
最初は、mhtファイルの意味がわからず、マイクロソフトに電話し、
下記のことを聞きました。
1)mhtとは、インターネット・エクスプロラーのファイルの
名前を付けて保存で、ファイルの種類で、mhtファイル形式の保存の
意味がわかりました。本当は、ファイルの種類のWebページ完全のイメージ
でした。ちょっと気に入っているページの動画と音楽のホームページを
保存したかったので、マイクロソフトに聞くとWebページ完全でも、
動画は保存できないことがわかりました。

上記の内容で下記のプロシジャー(サブルーチン)を作成しました。
Private Sub Save_HomePage_Click()
    
    '表示しているホームページの1画面をmhtファイル形式に
    '保存する。

    'mhtの形式のファイル名を入力する。
    
    CommonDialog1.Filter = "mht(*.mht)"
    CommonDialog1.ShowSave
    
    '保存か?又はキャンセルの判断
    If Trim(CommonDialog1.FileName) <> "" Then
    
        'ファイル名入力
    
        '変数のイニシャライズ(初期設定)
        
        Dim URL As String
        Dim FilePath As String
        Dim stringURL As String
        
        'アドレスをセットする。
        
        URL = WebBrowser1.LocationURL
        
        'ファイル名の加工(拡張子を大文字にしてチェックする)
        '大文字にするのは、おまじない
        
        If UCase(Right(CommonDialog1.FileName, 4)) <> ".MHT" Then
            FilePath = CommonDialog1.FileName & ".mht"
        Else
            FilePath = CommonDialog1.FileName
        End If
        
        '入力したファイルがあるか、確認
        '注意事項:同じファイル名で、同じURLの時、保存する時にまだここの改良必要?

        If Dir(FilePath) <> "" Then
            If MsgBox("保存済みのファイルがあります。上書きしますか?", vbOKCancel, "確認メッセージ") = vbOK Then
                Kill FilePath
                MsgBox "kill Ok"
            End If
        End If
        
        'mftファイルを保存
        'この4行は、ブラックボックス?
        'マイクロソフトでは、OutLookの言葉(?)を使っているらしい?

        Dim o As Object
        Set o = CreateObject("CDO.Message")
        o.CreateMHTMLBody URL
        o.GetStream().SaveToFile FilePath
        
        MsgBox "ホームページは保存しました。", vbOKOnly, "確認メッセージ"
    
    Else
    
        'ファイル名がない(キャンセル)
        
        MsgBox "ホームページの保存はキャンセルしました。", vbOKOnly, "確認メッセージ"
    
    End If
End Sub

結局、上記の内容(mth)のファイルの保存で、納得しました。
ありがとうございました。本当は、Web完全保存のイメージですけれども
私自身は、vb6の初心者ですので限界があり、これで納得しました。

ps.Htmlのファイル名が記述されて無いアドレスの場合
これは、今回のmftファイルで保存できました。
ps.Visual Basic for MS-DOS の経験者でしょうか?
これは、Disk Basic ,N88-Basicの頃です。

ps.今回おれいになったので下記の情報をおおしえします。
1)IBMのホームページ・ビルダー10で、アンケートホームを作成し、
自分のパソコンでテストランすると、新規のOutLookが起動して
アンケートの内容がない状態がありましたでしょうか?
IBM側は、Mailtoで送っているので、マイクロソフトに聞いてください。
マイクロソフト側は、IBMのソフトなので,IBMに聞いてください。
OEM(客先ブランド)の富士通は、IBM、マイクロソフトに聞いてください。
結局、たらいまわしをくらって、マイクロソフトに文句をいったら、
まじめに対応してくれて、結局、レジストリーのMailが間違っていたため
レジストリーのMailの中身を消してくださいと言われ、見事動きました。
マイクロソフトは、今回は私でもの間違いです。と釈明してくれて
さすが、天下のマイクロソフトだと思いました。
ただし、私のパソコンで、OSに関係なくパソコンの環境でそうなるそうです。
レジストリーは、自己責任なので、Mailtoが遅れないときは、
マイクロソフトに相談してください。
以上


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加