HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1012
YoHTML読み込み時Refreshさせない方法2解決


Yo

リンク

2011/10/12(Wed) 09:56:36|NO.42300

お世話になります。

HTMLを下記の方法で読み込んだ時に、Refreshをさせない方法はありますでしょうか

-------------------------------------------------------------------------
sURL = "URL"
charcode = "UTF-8"
ReturnHTML=""
newcom objIE, "InternetExplorer.Application" ; IE(InternetExplorer.Application)オブジェクトを作成
objIE("Silent") = 1
objIE("Visible") = 0 ; 非表示モードで起動
objIE->"Navigate" sURL ; 指定URLを開く
gosub *busywait
objDoc=objIE("Document")
objBody=objDoc("body")
ReturnHTML=objBody("innerHTML")
objIE->"Quit" ; IEを終了させる
delcom objDoc ; オブジェクトを破棄
delcom objBody
delcom objIE

読み込み終了

*busywait
statustext="HTML読み込み" ; ページの読み込みが終了するまで待つ
gosub *mainstatusput
repeat
wait 10
if objIE("Busy")==0 : break
loop
objDoc=objIE("Document")
repeat
wait 10
if (objdoc("readyState") == "complete") : break
loop
statustext="HTML読み込み終了"
return
--------------------------------------------------------------------

何度か表示させてみると、objDoc=objIE("Document") 行で エラーが出て止まってしまいます。
表示原因として表示させているHTMLにRefreshのタグがあり、リフレッシュのタイミングにより
エラーが出てるような気がします。

HSP側でエラーに対して対処できないため、そこで止まってしまいます。

よろしくお願いいたします。



この記事に返信する


pizza

リンク

2011/10/12(Wed) 15:28:27|NO.42301

以前作ったモジュールですが、IEではなくHTMLDocumentを使いたいだけなら役に立つかも。


#module #define IID_IDispatch "{00020400-0000-0000-C000-000000000046}" #define IID_IPersistFile "{0000010b-0000-0000-C000-000000000046}" #usecom IPersistFile IID_IPersistFile #comfunc IPersistFile_Load 5 wstr, int #uselib "urlmon.dll" #func CreateURLMoniker "CreateURLMoniker" int, wstr, int #uselib "ole32.dll" #func BindMoniker "BindMoniker" comobj, int, int, int #func IIDFromString "IIDFromString" wstr, var #uselib "kernel32.dll" #func GetFullPathName "GetFullPathNameA" sptr, int, int, int #deffunc loadHTML var v, str url // v = Documentオブジェクトを受け取る変数 // url = ロードするURL(PATH) dimtype doc, vartype("comobj"), 1 dimtype moniker, vartype("comobj"), 1 dim iid, 4 _url = url p = "" getstr p, _url, 0, ':' if p == "http" { CreateURLMoniker 0, url, varptr(moniker) if varuse(moniker) == 0 : return // モニカ作成失敗 IIDFromString IID_IDispatch, iid BindMoniker moniker, 0, varptr(iid), varptr(doc) delcom moniker } else { exist url if strsize != -1 { newcom doc, "htmlfile" if varuse(doc) { sdim fullpath, 260 pfilepart = 0 GetFullPathName url, 260, varptr(fullpath), varptr(pfilepart) IPersistFile_Load doc, fullpath, 0 } } } v = doc if varuse(doc) { if doc("readyState") == "uninitialized" : delcom v delcom doc } return #global // 使い方 loadHTML 変数, "URL" /* loadHTML objDoc, "http://hsp.tv" if varuse(objDoc) == 0 : dialog "HTMLDocument取得失敗" : end repeat wait 10 if objdoc("readyState") == "complete" : break loop objBody = objDoc("body") if varuse(objBody) == 0 : delcom objDoc : end buf = objBody("innerHTML") mes buf delcom objBody delcom objDoc stop */



Yo

リンク

2011/10/13(Thu) 18:22:45|NO.42341

お世話になります。

ソースまで掲載していただき、ありがとうございます。

早速、入れ替えてみました。

処理も高速化されIEも起動しないため、うまくいきそうです。

ありがとうございます。



ONION software Copyright 1997-2021(c) All rights reserved.