getIEObj

引数に指定した「タイトル」または「URL」を含むInternetExplorerオブジェクトを返します。

数値nを指定した場合、n番目に開いたInternetExplorerオブジェクトを取得します。負の数で後ろからn番目のものを取得します。0でInternet Explorerのタブの数を取得します。

IELINK関数などで新しいで開かれたタブのInternetExplorerオブジェクトを取得したいときに使います。

構文
  1. InternetExplorer = getIEObj( 文字列 or 数値, [完全一致フラグ] )
引数
文字列 or 数値
取得したいIEオブジェクトのタイトル・URLもしくは数値を指定
完全一致フラグ
TRUE
文字列が完全一致したものを取得
FALSE
文字列の一部を含むものを取得
戻値
Internet Explorerオブジェクト

プログラム

////////////////////////////////////////////////// // 【引数】 // 文字列 or 数値 : 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定 // 完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) // 【戻値】 // Internet Explorerオブジェクト ////////////////////////////////////////////////// FUNCTION getIEObj(str, flg = FALSE) DIM Shell = CREATEOLEOBJ("Shell.Application") SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND RESULT = ERR_VALUE FEND

解説

  1. 2行目
    DIM Shell = CREATEOLEOBJ("Shell.Application")
    Shell
    Shellオブジェクトを生成。
  2. 3-67行目
    SELECT CHKNUM(str) CASE TRUE DIM cnt = 0 SELECT TRUE CASE str > 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB str = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str < 0 FOR n = Shell.Windows.Count - 1 TO 0 STEP -1 TRY IFB Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 IFB ABS(str) = cnt THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF ENDIF EXCEPT ENDTRY NEXT CASE str = 0 FOR n = 0 TO Shell.Windows.Count - 1 TRY IF Shell.Windows.Item(n).Name = "Internet Explorer" THEN cnt = cnt + 1 EXCEPT ENDTRY NEXT RESULT = cnt EXIT SELEND CASE FALSE DIM t = GETTIME() REPEAT FOR n = 0 TO Shell.Windows.Count - 1 TRY DIM targetObj = Shell.Windows.Item(n) IFB targetObj.Name = "Internet Explorer" THEN SELECT flg CASE TRUE IFB targetObj.document.title = str OR targetObj.LocationURL = str THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF CASE FALSE IFB POS(str, targetObj.document.title) OR POS(str, targetObj.LocationURL) THEN RESULT = Shell.Windows.Item(n) EXIT ENDIF SELEND ENDIF EXCEPT ENDTRY NEXT UNTIL GETTIME() - t >= 5 SELEND
    TRUE(変数strが数値ならば)
    cnt
    Internet Explorerオブジェクトのカウント用。
    str > 0(変数strが0よりも大きければ)
    str番目のInternetExplorerオブジェクトを戻値として返す。
    str < 0(変数strが0よりも小さければ)
    後ろからstr番目のInternetExplorerオブジェクトを戻値として返す。
    str = 0(変数strが0ならば)
    InternetExplorerオブジェクトの数を戻値として返す。
    FALSE(変数strが数値でなければ)
    t
    現在の時刻を代入。タイマー計測用。
    targetObj
    n番目のオブジェクトを代入。
  3. 68行目
    RESULT = ERR_VALUE
    指定した条件にマッチするInternetExplorerオブジェクトがなければERR_VALUEを戻値として返す。

getIEObjの使い方

  • 2番目に開いたIEオブエジェクト
    getIEObj(2)
  • 最後に開いた(後ろから1番目の)IEオブエジェクト
    getIEObj(-1)
  • タイトルもしくはURLに「example.com」を含むIEオブエジェクト
    getIEObj("example.com")
  • タイトルもしくはURLが「UWSC」に完全一致するIEオブエジェクト
    getIEObj("UWSC", TRUE)
  • Internet Explorerの個数
    getIEOBj(0)
  • 一番最後の「google」を含むタブ
    FOR n = getIEObj(0) TO 1 STEP -1 DIM cnt = 0 DIM IE = getIEObj(n) PRINT IE.document.URL IFB POS("google", IE.document.URL) <> 0 THEN cnt = cnt + 1 ENDIF IF cnt = 1 THEN BREAK NEXT