ほい、サンプルです。
;
; IEコンポーネントを使ったブラウザ
;
#define DIID_DWebBrowserEvents2 "{34A715A0-6587-11D0-924A-0020AFC7AC4D}"
#define DISPID_NAVIGATECOMPLETE2 252
cls 1
sdim url,512
url="http://hsp.tv/"
objsize 600,24
pos 0,2:mes "URL:"
pos 0,26:mes "WEB Browser Sample"
pos 40,0:input url
objsize 120,24
pos 520,24:button "移動",*wow
pos 400,24:button "進む",*go_f
pos 280,24:button "戻る",*go_b
////////////////ボタン追加////////////////
pos 160,24:button "自動スクロール",*scroll_auto
////////////////以上////////////////
pos 0,48
axobj ie, "Shell.Explorer.2",640,480-48
num=stat
comevent ie_event, ie, "{34A715A0-6587-11D0-924A-0020AFC7AC4D}",*event ; DIID_DWebBrowserEvents2
ie->"Navigate" url
*main
stop
*event
; COMイベント処理
dispid = comevdisp(ie_event)
if dispid = DISPID_NAVIGATECOMPLETE2 : gosub *OnNavigateComplete2
return
*OnNavigateComplete2
name = ie("LocationURL")
objprm 0,name
pDoc = ie("Document")
name = pDoc("Title")
title name
delcom pDoc
return
*wow
ie->"Navigate" url
goto *main
*go_f
ie->"GoForward"
goto *main
*go_b
ie->"GoBack"
goto *main
////////////////処理追加////////////////
*scroll_auto
pDoc = ie("Document")
; IHTMLDocument2インターフェースを取得します。
pBody = pDoc("body")
; body要素のIHTMLElement2インターフェースを取得します。
pPW = pDoc("parentWindow")
; IHTMLWindow2インターフェースを取得します。
objH = ie("Height")
message = "オブジェクトの高さは"+objH+"です。"
docH = pBody("scrollHeight")
message += "\nページ本来の高さは"+docH+"です。"
scrollH = docH-objH
message += "\nつまり、 "+docH+" - "+objH+" = "+scrollH+" だけスクロールすれば、"
message += "ページの一番下に到達します。"
dialog message
repeat
if pBody("scrollTop") >= scrollH:break
; scrollTopプロパティを利用します。
; このプロパティは現在どれだけ下方向にスクロールされているかを示します。
; このプロパティとあらかじめ計算しておいたスクロール量を比較し、
; 一番下に到達しているかどうかを判断します。
pPW->"scrollBy" 0,2
; scrollByメソッドを利用します。
; このメソッドは現在の位置から指定したピクセル数だけスクロールさせます。
; 第一パラメータは水平方向のスクロールのオフセットです。
; 正数を指定すると右へ、負数を指定すると左へスクロールします。
; 第二パラメータは垂直方向のスクロールのオフセットです。
; 正数を指定すると下へ、負数を指定すると上へスクロールします。
wait 10
loop
dialog "自動スクロールが終了しました。"
; delcom pPW ; なくてもよさそう。
; delcom pBody
; delcom pDoc
goto *main
////////////////以上////////////////
HSP付属のサンプル(web.hsp)にボタンと処理を追加しただけです。
あと、先のレスに書き忘れていたんですが、現在のスクロール量を取得するにはIHTMLElement2インターフェースのscrollTopプロパティを使います。使うんですが……一部のWebページではなぜかうまく取得できません……。上のサンプルではscrollTopプロパティで自動スクロールを終了するかどうか判定しているので、うまく取得できないと自動スクロールが終わらないのです。
そういうわけで、自動スクロールの終了条件は別のものにした方が良いかもしれません。