Contents
引数に指定した「タイトル」または「URL」を含むInternetExplorerオブジェクトを返します。
数値nを指定した場合、n番目に開いたInternetExplorerオブジェクトを取得します。負の数で後ろからn番目のものを取得します。0でInternet Explorerのタブの数を取得します。
IELINK関数などで新しいで開かれたタブのInternetExplorerオブジェクトを取得したいときに使います。
- 構文
- InternetExplorer = getIEObj( 文字列 or 数値, [完全一致フラグ] )
- 引数
- 文字列 or 数値
- 取得したいIEオブジェクトのタイトル・URLもしくは数値を指定
- 完全一致フラグ
- TRUE
- 文字列が完全一致したものを取得
- FALSE
- 文字列の一部を含むものを取得
プログラム
//////////////////////////////////////////////////
// 【引数】
// 文字列 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
解説
- 2行目
DIM Shell = CREATEOLEOBJ("Shell.Application")
- Shell
- Shellオブジェクトを生成。
- 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番目のオブジェクトを代入。
- 68行目
指定した条件にマッチするInternetExplorerオブジェクトがなければERR_VALUEを戻値として返す。RESULT = 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