インターネットブラウザを作成してみる (IEコンポーネント) Yahoo!ブックマーク に追加 はてなブックマーク に追加

Hot Soup Processor (HSP) Windows上で動作するプログラムを作成できるフリーソフト(無料)なプログラミングソフト『HSP』(公式サイト「HSPTV!」)を使って、 インターネット上のページを閲覧するソフトウェア「ブラウザ」を作成します。
 で、HTMLのレンダリング処理をすべて自前で開発するのはさすがに無理があるので、Microsoftによる「Internet Explorer」のレンダリングエンジン「Trident」を利用して、 いわゆるIEコンポーネントなブラウザとして放り投げる形にします。

HSP3はCOMに標準対応

ブラウザの作成は、HSP2時代だとちょくとさんが製作された「LOLLIPOP」モジュールを 利用するのが一番手近な手段でしたが、HSP3(HSP 3.x)は標準でCOMの利用をサポートしてます。いずれにしても、HSPプログラミング外の知識が必要になってきます。

HSPの開発環境に付属してるブラウザ関連のサンプルソースは次のとおりです。

まずは、URLアドレスを指定するボックスと移動ボタンを用意して、axobj命令でIEコンポーネントのコントロールを 設置します。他のオブジェクトのように表示位置はpos命令、表示サイズはobjsize命令なんかでも指定できます。

//	IEコンポーネントの設置 (by Kpan)

	sdim url, 512
	input url, ginfo(12), 22
	button gosub "移動", *navigate

;	IEコンポーネントの設置
	axobj IE, "Shell.Explorer.2", ginfo(12), 300

	stop

*navigate
	if url = "" : return

;	ページ移動
	IE->"Navigate" url
	return

ページの移動は「Navigate」メソッドを利用します。他にも下のような基本的なメソッドがあります。

Navigate String 指定ページに移動
GoBack 前に戻る
GoForward 次に進む
GoHome ホームページに移動
Refresh ページの更新
Refresh2 Value ページの更新
 0=キャッシュから読み込む通常更新
 3=サーバーから読み込む完全更新
Stop 読み込みの停止

ブラウザの各種イベントを取得するには、あらかじめcomevent命令でサブルーチンジャンプさせる指定を用意しておきます。 イベント内では、comevdisp関数やcomevarg命令で情報を取得することになります。

//	IEコンポーネントのイベント (by Kpan)

#define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}"

	sdim sText, 512

	sdim url, 512
	input url, ginfo(12), 22
	button gosub "移動", *navigate

	axobj IE, "Shell.Explorer.2", ginfo(12), 300

;	ブラウザイベントの登録
	comevent ie_event, IE, DIID_DWebBrowserEvents2, *event

	stop

*navigate
	if url = "" : return

	IE->"Navigate" url
	return

*event
	DispID = comevdisp(ie_event)

//	DISPID_STATUSTEXTCHANGE
	if DispID = 102 {
		comevarg sText, ie_event, 0
		mes sText

		return
	}

//	DISPID_TITLECHANGE
	if DispID = 113 {
		comevarg sText, ie_event, 0
		title ""+sText

		return
	}

	return

イベントは下のようなものがあります。いっぱいあってめんどくさくなり・・・手抜き。(^^;

DISPID_STATUSTEXTCHANGE (ステータスバーの)状態メッセージが変更された時
DISPID_COMMANDSTATECHANGE 「前に戻る」、「次に進む」のコマンドの状態が変更された時
DISPID_TITLECHANGE (タイトルバーの)タイトルが変更された時
DISPID_BEFORENAVIGATE2 ページに移動する前の段階
DISPID_NAVIGATECOMPLETE2 ページに移動した後の段階

HTMLタグの書き込み

新規HTMLタグを書き込んでIEコンポーネント上に反映させます。HSPでは属性名の「”」を「¥”」で表現する必要があるのでご注意を。

//	IEコンポーネントにHTMLタグを新規挿入 (by Kpan)

	sdim html, 4048

	html = "<font size=\"6\">HSPミニ講座 by Kpan</font>\n"
	html + "<marquee>"+gettime(1)+"月"+gettime(3)+"日</marquee>"
	mesbox html, ginfo(12), 100

	button gosub "書き込み", *write

	axobj IE, "Shell.Explorer.2", ginfo(12), 300
	IE->"Navigate" "about:blank"

	stop

*write
	pDocument = IE("Document")

	pDocument->"Open"	; 開いて
	pDocument->"Write" html	; 書き込んで
	pDocument->"Close" ; 閉じる

	return

ブラウザの作成関連ページ。

キーワード de HSP

HSPミニ講座

★ Yahoo!経由用ページ : ファイル | フォルダ | メニュー | マウス | ウィンドウ | オブジェクト | 文字列 | システム | 関数 | sendmsg命令 | その他 | サイトマップ | リンク