getIEObjゲットアイイーオブジェ

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

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

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

マッチするInternetExplorer オブジェクトが見つからなかった場合、ERR_VALUEを返します。

構文
  1. InternetExplorer = getIEObj( 文字列 or 数値, 完全一致フラグ )
引数
文字列 or 数値 必須
取得したいInternetExplorer オブジェクトのタイトル・URLもしくは数値を指定
完全一致フラグ 省略可
TRUE
文字列が完全一致したものを取得
FALSE
文字列の一部を含むものを取得
戻り値
条件に一致するInternetExplorer

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   文字列 or 数値 : 取得したい<a href="https://uwsc.jp/com/ie/" >InternetExplorer オブジェクト</a>のタイトル・URLもしくは数値を指定 
//   完全一致フラグ : (TRUE : 文字列が完全一致したものを取得、FALSE : 文字列の一部を含むものを取得) 
// 【戻り値】
//   条件に一致する<a href="https://uwsc.jp/com/ie" >InternetExplorer</a> 
//////////////////////////////////////////////////
FUNCTION getIEObj(str, flg = FALSE)
	DIM Shell = CREATEOLEOBJ("Shell.Application")
	DIM ShellWindows = Shell.Windows
	DIM IE[-1]
	FOR i = 0 TO ShellWindows.Count - 1
		TRY
			IFB ShellWindows.Item(i).Name = "Internet Explorer" THEN
				arrayPush(IE, ShellWindows.Item(i))
			ENDIF
		EXCEPT
		ENDTRY
	NEXT
	SELECT CHKNUM(str)
		CASE TRUE
			IFB str = 0 THEN
				RESULT = LENGTH(IE)
			ELSE
				IF str < 0 THEN str = str + LENGTH(IE) + 1
				TRY
					RESULT = IE[str-1]
				EXCEPT
					RESULT = ERR_VALUE
				ENDTRY
			ENDIF
		CASE FALSE
			DIM pattern = IIF(flg, "^" + str + "$", str)
			DIM titleList = SLICE(IE)
			FOR i = 0 TO UBound(titleList)
				titleList[i] = titleList[i].Document.title
			NEXT
			DIM urlList = SLICE(IE)
			FOR i = 0 TO UBound(urlList)
				urlList[i] = urlList[i].Document.URL
			NEXT
			DIM num = ERR_VALUE
			SELECT TRUE
				CASE pregGrep(pattern, titleList) <> FALSE;	num = arraySearch(pregGrep(pattern, titleList)[0], titleList)
				CASE pregGrep(pattern, urlList) <> FALSE;		num = arraySearch(pregGrep(pattern, urlList)[0], urlList)
			SELEND
			TRY
				RESULT = IE[num]
			EXCEPT
				RESULT = ERR_VALUE
			ENDTRY
	SELEND
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   values : 追加する要素をvalue1から指定 
// 【戻り値】
//   処理後の配列の要素の数 
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
    DIM i = 1
    WHILE EVAL("value" + i) <> EMPTY
	  DIM res = RESIZE(array, UBound(array) + 1)
	  array[res] = EVAL("value" + i)
	  i = i + 1
	WEND
	RESULT = LENGTH(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   needle : 検索する値 
//   haystack : 配列 
// 【戻り値】
//   needleが見つかった場合に配列のキー 
//////////////////////////////////////////////////
FUNCTION arraySearch(needle, haystack[])
	DIM i = 0
	FOR item IN haystack
		IFB item = needle THEN
			RESULT = i
			EXIT
		ENDIF
		i = i + 1
	NEXT
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻り値】
//   truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき 
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   pattern : 検索するパターンを表す文字列 
//   array : 検索される配列 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION pregGrep(pattern, array[], flags = 0)
	DIM res[-1]
	FOR item IN array
		IF reTest(item, pattern) THEN arrayPush(res, item)
	NEXT
	RESULT = SLICE(res)
FEND

//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現にマッチするかどうか 
//////////////////////////////////////////////////
FUNCTION reTest(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Test(str)
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND

使い方

  • 2番目に開いたIEオブジェクト
    UWSC
    getIEObj(2)
  • 最後に開いた(後ろから1番目の)IEオブジェクト
    UWSC
    getIEObj(-1)
  • タイトルもしくはURLに「example.com」を含むIEオブジェクト
    UWSC
    getIEObj("example.com")
  • タイトルもしくはURLが「UWSC」に完全一致するIEオブジェクト
    UWSC
    getIEObj("UWSC", TRUE)
  • Internet Explorerの個数
    UWSC
    getIEOBj(0)
  • 一番最後の「google」を含むタブ
    UWSC
    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

この記事は役に立ちましたか?

はい
いいえ
ご協力ありがとうございます。

関連記事

IEGETFRAME関数 (スクリプト関数)
HTMLのiframeタグで埋め込まれたインラインフレームを取得します。
IESETDATA関数 (スクリプト関数)
ウェブ上に値を設定します。
BusyWait (自作関数)
IEオブジェクトの読み込みが完了するのを待ちます。
IE.ExecWB メソッド
コマンドを実行します。
IE.GoForward メソッド
履歴リストの1つ後の項目に移動します。
IE.Refresh2 メソッド
指定されたリフレッシュレベルで現在表示されているファイルを再読み込みします。
IE.Stop メソッド
読込中のWebページやダウンロードのキャンセル、BGMやアニメーションの動的要素を停止します。
IE.Navigate メソッド
URLまたは絶対パスで指定されたファイルを開きます。
IE.Document プロパティ
ドキュメントオブジェクトを取得
IE.Left プロパティ
オブジェクトの左端の座標を取得または設定します。