Function Reference

_IEAttach

(選択モードに基づいて)指定した検索文字列、部分文字列と一致するInternet Explorerのインスタンスを取得します。

#include <IE.au3>
_IEAttach ( $s_string [, $s_mode = "Title" [, $i_instance = 1]] )

 

パラメータ

$s_string 検索文字列 ("embedded"、"dialogbox"では、タイトルの部分文字列またはウィンドウのHWND)
$s_mode [オプション]検索モードを指定します
Title = (デフォルト) メインドキュメントタイトルの部分文字列
WindowTitle = フルウィンドウタイトルの部分文字列 (ドキュメントタイトルの代用)
URL = 現在のページのURLまたは部分文字列
Text = 現在のページのボディのテキストの部分文字列
HTML = 現在のページのボディのHTMLの部分文字列
HWND = ブラウザウィンドウのHWND
Embedded = コントロールを埋め込んであるウィンドウのHWNDまたはタイトルの部分文字列
DialogBox = モーダル/モーダレスダイアログボックスのHWNDまたはタイトルの部分文字列
Instance = $s_stringは無視され、全ての利用可能なブラウザインスタンスから(インスタンス番号が一致する)1つが返されます。
$i_instance [オプション]$s_string、$s_modeと一致するブラウザ、埋め込みブラウザのグループの1始まりのインデックス。注意を参照。

 

返し値

成功: Internet Explorerオブジェクトを指すオブジェクト変数。ただしEmbeddedモードとDislogBoxモードではウィンドウオブジェクトが返される
失敗: 0を返し@ERRORを設定します
@Error: 0 ($_IEStatus_Success) = 正常終了
5 ($_IEStatus_InvalidValue) = 無効な値
7 ($_IEStatus_NoMatch) = 一致するものがありません
@Extended: 無効なパラメータの番号が格納されています

 

注意

_IEAttachではブラウザによって作成されたモーダル/モーダレスダイアログを取得するために"dialogbox"パラメータが提供されています。ただしブラウザによって作成された全てのダイアログがこの方法で取得・制御できるわけではないので注意が必要です。これらのダイアログの多くは実際は標準的ウィンドウであり、従来のAutoItウィンドウ関数で制御することが可能です。これらのウィンドウを見分けるための信頼性の高い方法は "AutoIt Window Info"を使用することです。ウィンドウに"Internet Explorer_Server"というコントロールが存在する場合にはこの関数で取得することが可能です。存在しない場合にはそれは標準的ウィンドウであり、制御するためには従来のAutoItウィンドウ関数を使用しなければなりません。

ハイパーテキストアプリケーション(.hta)ウィンドウは"embedded"オプションを使用して取得できます。

標準のWin*関数で利用可能なウィンドウ名の特別な記述の仕方を"dialogbox"モード、"embedded"モードのタイトル部分文字列部に使用することが可能です。

"embedded"モードでの"$i_instance"の使用:指定したWebBrowserのインスタンスへの参照を返すために使用し、特定のウィンドウ内が複数ある場合に特に便利です。embeddedモードで$s_stringにウィンドウタイトルをいれて渡すと、最初にタイトルが一致したウィンドウが使用されます。もし欲しいWebBrowserコントロールが別のウィンドウにある場合はタイトルの代わりにウィンドウのHWNDを渡すか、標準のWin*関数で利用可能なウィンドウ名の特別な記述の仕方を利用しなければなりません。

"embedded"以外のモードでの"$i_instance"の使用:$s_mode、$s_stringでの検索で一致した全ウィンドウのグループからブラウザの参照を返すために使用します。DialogBoxモードでのインスタンスの順番はWinList()のタイトル検索での順番によって決まります。他のモードではインスタンスの順番はShell.Windowsコレクションによって決まります。

"$i_instance"値 > 1でなければいけません。"hwnd"モード、"DialogBox"モードで$s_stringにHWNDをいれて渡す場合に1を設定すると、警告メッセージが表示されます。

DialogBoxモード、Embeddedモードは標準のブラウザウィンドウを取得するためにも使用できます。ただし返されるオブジェクトはブラウザ内のトップレベルのウィンドウで、Internet Explorerオブジェクトではありません。ウィンドウオブジェクトを使ってInternet Explorerオブジェクトの属性(e.g. ステータスバーテキスト、アドレスバー etc.)の全てにアクセスすることはできません。また、これらのオブジェクトに対して_IENavigateなどの関数を使用するとIE7が実装済みのタブを持っているためにCOMエラーが発生します。この方法はブラウザのインスタンスを見つけるためには便利ですが、すぐに他のモードで_IEAttachを使用し、ウィンドウオブジェクトから得た情報を使って関連付けられたInternet Explorerオブジェクトへの参照を得ることをおすすめします。

 

関連

_IECreate, _IECreateEmbedded, _IEQuit

 


; *******************************************************
; 例 1 - タイトルに"AutoIt"とあるブラウザを取得。そのURLを表示
; *******************************************************
;
#include <IE.au3>
$oIE = _IEAttach ("AutoIt")
MsgBox(0, "The URL", _IEPropertyGet ($oIE, "locationurl"))

; *******************************************************
; 例 2 - トップレベルドキュメントのテキストに
;              "The quick brown fox"とあるブラウザを取得
; *******************************************************
;
#include <IE.au3>
$oIE = _IEAttach ("The quick brown fox", "text")

; *******************************************************
; 例 3 - 他のウィンドウに埋め込まれているブラウザコントロールを取得
; *******************************************************
;
#include <IE.au3>
$oIE = _IEAttach ("A Window Title", "embedded")

; *******************************************************
; 例 4 - 他のウィンドウに埋め込まれている3番目のブラウザコントロールを取得
;               タイトルに文字列'ICQ'を含む2番目のウィンドウ
;               にウィンドウ名の特別な記述の仕方を使用
; *******************************************************
;
#include <IE.au3>
$oIE = _IEAttach ("[REGEXPTITLE:ICQ; INSTANCE:2]", "embedded", 3)

; *******************************************************
; 例 5 - 現在存在する全ブラウザインスタンスの参照オブジェクトの配列を作成
;               配列の先頭要素には見つかったインスタンスの数が格納される
; *******************************************************
;
#include <IE.au3>

Dim $aIE[1]
$aIE[0] = 0

$i = 1
While 1
    $oIE = _IEAttach ("", "instance", $i)
    If @error = $_IEStatus_NoMatch Then ExitLoop
    ReDim $aIE[$i + 1]
    $aIE[$i] = $oIE
    $aIE[0] = $i
    $i += 1
WEnd

MsgBox(0, "Browsers Found", "Number of browser instances in the array: " & $aIE[0])