※記事内容はsleipnir2についての記事です
環境設定
ツール→sleipnirオプション→全般→「スクリプトによるクライアントの操作を許可する」にチェック
OLEオブジェクト作成とアクティブなタブの取得
pnir=CreateOLEobj("Sleipnir.API")
tab=pnir.ActiveIndex //アクティブなタブのタブ位置
id=pnir.GetDocumentID(tab) //タブのID
tab_obj= pnir.GetWebBrowserObject(id) //タブのWebBrowserオブジェクト
短縮すると・・
pnir=CreateOLEobj("Sleipnir.API")
tab_obj= pnir.GetWebBrowserObject(pnir.GetDocumentID(pnir.ActiveIndex))
この戻り値tab_objは
IE=CreateOLEObj("InternetExplorer.Application")
で作成される戻り値IEとほぼ同等
なので
pnir=CreateOLEobj("Sleipnir.API")
IE=pnir.GetWebBrowserObject(pnir.GetDocumentID(pnir.ActiveIndex))
として戻り値をIEとしてしまった方がIE用に作ったFunction等が流用できるので便利
例えば・・
こんな風に使える
ifb Msgbox("IE場合はYes、pnirの場合はNo",BTN_YES or BTN_NO)=BTN_YES
IE=CreateOLEObj("InternetExplorer.Application")
IE.Visible=true
else
pnir=CreateOLEobj("Sleipnir.API")
IE=pnir.GetWebBrowserObject(pnir.GetDocumentID(pnir.ActiveIndex))
endif
IE.Navigate("http://www.yahoo.co.jp/")
BusyWait(IE)
doc=IE.document
Msgbox(doc.url)
//------
Procedure BusyWait(IE)
Const TIME_OUT = 90
tm = Gettime()
repeat
Sleep(0.2)
ifb Gettime() - tm > TIME_OUT
MsgBox("Time Out:BusyWait")
ExitExit
endif
until (! ie.busy) and (ie.readyState=4)
Sleep(0.5)
Fend
できないのはIE.Navigate2で新規タブを開く操作
IE.quitで閉じる操作ぐらいでほぼIEと同等の操作ができる。
Sleipnir特有の操作
詳しくは公式リファレンス見て欲しいんですが主な操作をいくつか
タブブラウザ Sleipnir オンラインデータベース(Sleipnir.API リファレンス)
新規タブを開く
id=pnir.newwindow(URL,true)
trueで新規タブをアクティブにする
例)IE=pnir.GetWebBrowserObject(pnir.newwindow(URL,true))
開いてるタブの数
pnir.GetCount
タブを閉じる
pnir.Close(id)