WinInetによるHTTPデータの受信  Visual Basic 6.0

IEを使ったり、ActiveX(WebBrouser)コントロールなどを使うと、
簡単に受信できる反面、余計な画像も取得されて
動作が非常に遅くなります。

ここでは、WinInetのAPI関数でHTTPにより
データを直接受信します。

受信しただけでは芸が無いので、HTMLタグの除去コード変換(EUC、UTF-8など からUnicode)も行います。
他の方法 CreateDocumentFromUrl によるHTTPデータの受信
メニュー
処理概要
使用する関数など
フォーム構成
VB6ソース
関連方式
リンクリスト

処理概要

・WinInetのインターネット関連API関数により、HTTPデータを受信
・コード変換(nkf32.dll)
・タグ除去(正規表現による置換 - チェックボックスにより生データとの切替)

使用する関数など

InternetOpen

インターネットのハンドルを作成
Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" _
   (ByVal lpszCallerName As String, _
    ByVal dwAccessType As Long, _
    ByVal lpszProxyName As String, _
    ByVal lpszProxyBypass As String, _
    ByVal dwFlags As Long) As Long
lpszCallerName インターネットにアクセスする際のエージェント名。任意
dwAccessType アクセス方法(後記)
lpszProxyName プロクシサーバ名を指定。無い場合はヌル文字
lpszProxyBypass ローカルでの既知のホスト名またはIPアドレスのリスト。ここでは使用しない(ヌル文字)。
dwFlags 関数の動作を指定。ここでは使用しない(0)。

アクセス方法の指定 dwAccessType
INTERNET_OPEN_TYPE_DIRECT 全てのホスト名をローカルに解決
INTERNET_OPEN_TYPE_PROXY 要求をプロクシに渡す
INTERNET_OPEN_TYPE_PRECONFIG レジストリに保持されている設定を利用 本処理


InternetOpenUrl

指定されたURLをオープンし、接続を確立する
Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" _
   (ByVal hInternet As Long, _
    ByVal lpszUrl As String, _
    ByVal lpszHeaders As String, _
    ByVal dwHeadersLength As Long, _
    ByVal dwFlags As Long, _
    ByVal dwContext As Long) As Long
hInternet インターネットハンドル(InternetOpenの返却値)
lpszUrl オープンするURL
lpszHeaders ヘッダ。(ここでは省略)
dwHeadersLength ヘッダの文字数(ここでは0)
dwFlags オープンする種別。INTERNET_FLAG_RELOAD:「常にサーバからデータを取得」を指定
dwContext 未使用

InternetReadFile

インターネット上のファイルを読み込む
Declare Function InternetReadFile Lib "wininet.dll" 
    (ByVal hFile As Long, _
     ByRef lpBuffer As Any, _
     ByVal lNumBytesToRead As Long, _
     ByRef lNumberOfBytesRead As Long) As Long
hFile InternetOpenUrlで返されたハンドル
lpBuffer 受信バッファ
lNumBytesToRead 受信バッファサイズ
lNumberOfBytesReadv 実際に受信したデータのサイズ(関数がセットする)

その他の関数

InternetCloseHandle:インターネットハンドルを閉じる

NkfConvert:コード変換関数(EUCやUTF-8などからShift_Jisへ自動変換)

SetNkfOption:NkfConvertへのパラメータセット用関数
コード変換関数を使用するためには、「nkf32.dll」が必要です。下記URLからダウンロードできます。
http://www.vector.co.jp/soft/dl/win95/util/se295331.html
  (「nkf.exe nkf32.dll Windows用」 をダウンロード)

解凍後、nkfwin2080フォルダのNTま たは9xフォルダから「nkf32.dll」を本 ツールと同じフォルダ、もしくはウィンドウズのシステム フォルダ(System32)にコピーしてください。

タグ除去

正規表現、およびVBのReplace関数でタグを除去しています。
正規表現を使用するためには、Microsoft VBScript Regular Expressions の参照設定が必要

正規表現

正規表現の使用方法や記述例については下記を参照
  サルにもわかる正規表現入門
  VB6.0 で正規表現を使用する方法
  正規表現コレクション

フォーム構成

 フォーム上に下記に示すコントロールを配置
コントロール配置 実行イメージ

フォームを追加し、下記のコントロールを配置

コマンドボタン  1個
チェックボックス 1個
テキストボックス 2個 MultiLine=True
     ScrollBar=3-両方 にしておく

注:本ツールが動作するためには「nkf32.dll」が必要です。

VB6ソース サンプルコードのダウンロードVB6.0

サンプルの実行:解凍後、「iectrl.0」の中の「IE制御.exe」を実行

フォーム

標準モジュール


関連方式

E11のタブ制御 - IE11のタブ制御と情報取得
IE制御 - IEの制御と表示するHTMLドキュメントを操作
CreateDocumentFromUrlによるHTTPデータの受信
WinInetによるHTTPデータの受信

×
PageTop