掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
IE以外のブラウザでweb上のデータを取得するには? (ID:138574)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> IE専用と聞いていた .responseStream の方も IE専用? なんだか、Ajax 関連の情報とゴッチャになっているような気がします。 MSXML は、IE による Ajax で使われるオブジェクトですし、 他のブラウザの Ajax で responseStream が使えないのは事実ですが、 先のコードが、Ajax によるコードというわけでは無いですし。 >> G(0) = &H7BF80980 >> G(1) = &H101ABF32 >> G(2) = &HAA00BB8B >> G(3) = &HAB0C3000 これは、「IID_Picture インターフェイス」を表す ID です。 GUID 表記では {7BF80980-BF32-101A-8BBB-00AA00300CAB} となります。 > の部分等が理解できなく(16進数というのはわかりましたが)、 これを、OleLoadPicture という API の第4引数に指定しています。 これは、画像データを Picture オブジェクトに変換するために必要でした。 第1引数:画像データを持ったストリーム(IStreamインターフェース) 第2引数:読み込みサイズ 第3引数:KeepOriginalFormatの指定 第4引数:データの返却方式を表すインターフェイスID 第5引数:返却値(生成されたPictureオブジェクトが返される) なお、データのダウンロードだけなら、この API を使う必要はありません。 responseStream プロパティを使う代わりに、responseBody プロパティを使って、 Dim b() As Byte b = O.responseBody とすれば、データのバイナリがそのまま返されます。 あとはそれを、Put # ステートメント等でファイルとして保存してやるだけです。 (それが画像であるなら、LoadPicture 関数を使って画面に表示できます) また、WebBrowser や MSXML といった ActiveX コンポーネントに頼らずとも、 VB6 には標準で、ファイルをダウンロードする機能が標準で用意されていますよ。 ----------- 1. [プロジェクト]メニューから、[ユーザーコントロールの追加]を選択。 2. 追加された UserControl1 に、以下のコードを記述。 Option Explicit Public Sub Download(ByVal URL As String, ByVal FilePath As String) UserControl.AsyncRead _ URL, vbAsyncTypeFile, FilePath, vbAsyncReadSynchronousDownload End Sub Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty) Dim saveFile As String saveFile = AsyncProp.PropertyName If Dir(saveFile) <> "" Then Kill saveFile End If Name AsyncProp.Value As saveFile End Sub 3. もし、UserControl1 のデザイナ画面を開いているなら、それを閉じる。 4. Form1 のデザイン画面を開き、UserControl1 と CommandButton を貼る。 (それぞれ、UserControl11、Command1 という名前になる) 5. Form1 に、以下のコードを記述。 Option Explicit Private Sub Command1_Click() UserControl11.Download _ "http://www.goo.ne.jp/img/logo/gootop_logo.gif", _ "C:\sample.gif" UserControl11.Download _ "http://www.ietf.org/rfc/rfc4180.txt", _ "C:\sample.txt" End Sub
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.