起動中のIEを列挙する
UWSC公式掲示板に答えてみた。
起動中のIEのURLを列挙したいらしい。
GetActiveOleObjを使われていて、1枚目しか取れない、ということだったので、タイトル指定でいけるかと思ったけど、URLが欲しいくらいだから、タイトルは判らないものと勝手に想定してみた。
タブを考慮しない場合は、UWSCの作法にのっとって、全ウインドウからIEを探す。
numWin = GETALLWIN() FOR i = 0 TO numWin - 1 IFB STATUS(ALL_WIN_ID[i], ST_CLASS) = "IEFrame" THEN url = getstr(ALL_WIN_ID[i], 1) Print url ENDIF NEXT
タブを考慮する必要がある場合は、IEは相変わらずShellのようなので、COM任せ
sh = CreateOleObj("Shell.Application") explorers = sh.Windows() For i = 0 To explorers.Count - 1 COM_ERR_IGN url = explorers.item(i).document.url If !COM_ERR_FLG Then Print url COM_ERR_RET Next
ついでに後者を、PowershellとVBScriptにしてみた。
COMなので楽勝と思ったら、JScriptではなぜか失敗、、、。
$sh = New-Object -ComObject Shell.Application $exs = $sh.Windows() for($i = 0; $i -lt $exs.Count; $i++) { $exs.Item($i).Document.Url }
Set sh = CreateObject("Shell.Application") Set exs = sh.Windows() For i = 0 To exs.Count - 1 On Error Resume Next WScript.Echo(exs.Item(i).Document.Url) On Error Goto 0 Next Set exs = Nothing Set sh = Nothing
ループまでは期待通りなのに、Urlが取れない、、、。
var sh = new ActiveXObject('Shell.Application'); var exs = sh.Windows(); for(var i = 0; i < exs.Count; i++) { WScript.Echo(exs.Item(i).Document.Url); }