IEの遷移、履歴操作、ウィンドウを閉じる

IEの遷移履歴やウィンドウを閉じる操作も行えます。
例えばIE.quitと命令するとウィンドウがクローズします

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
IE.navigate("http://canal22.org/sample0005/")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4
MSGBOX("ウィンドウを閉じます")
IE.quit

履歴操作、ホームページ、検索ページ

以下のメソッドを実行することで、履歴を辿れたり
ホームページや、検索ページへの遷移が行えます。
IE.goBack・・・一つ前に戻る
IE.goForward・・・一つ次に進む
IE.goHome・・・ホームページに遷移
IE.goSearch・・・検索ページに遷移
IE.refresh・・・ページのリフレッシュ

実行時のスクリプトは下記の通りです。

この投稿の続きを読む »

タグ

2012年10月11日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

IE.document.forms.elementsに情報を入力して送信

IE.document.forms.elementsではエレメントの情報取得に加え、
値をセットすることもできます。
フォームのオブジェクトに値を自動入力し、
サブミット(送信)するには以下のようにします。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
IE.navigate("http://canal22.org/sample0012/")
 
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4

//「名前」=大小山田を入力
IE.document.forms[0].elements[0].value = "大小山田"
//「都道府県」=北海道を選択
IE.document.forms[0].elements[1].selectedIndex =  3
//「性別」=女性にチェック
IE.document.forms[0].elements[3].checked = True
//「好きな色」=赤、青、黄にチェック
IE.document.forms[0].elements[5].checked = True
IE.document.forms[0].elements[6].checked = True
IE.document.forms[0].elements[7].checked = True
//「パスワード」=1234567890を入力
IE.document.forms[0].elements[8].value = "1234567890"
//「備考」=改行を含む文字列を入力
IE.document.forms[0].elements[9].value = "Hola!<#CR>こんにちは"

MSGBOX("一度リセットします")
IE.document.forms[0].reset()

MSGBOX("再度入力します")

//「名前」=大小山田を入力
IE.document.forms[0].elements[0].value = "大小山田"
//「都道府県」=北海道を選択
IE.document.forms[0].elements[1].selectedIndex =  3
//「性別」=女性にチェック
IE.document.forms[0].elements[3].checked = True
//「好きな色」=赤、青、黄にチェック
IE.document.forms[0].elements[5].checked = True
IE.document.forms[0].elements[6].checked = True
IE.document.forms[0].elements[7].checked = True
//「パスワード」=1234567890を入力
IE.document.forms[0].elements[8].value = "1234567890"
//「備考」=改行を含む文字列を入力
IE.document.forms[0].elements[9].value = "Hola!<#CR>こんにちは"

MSGBOX("サブミットします※プログラムは用意していないため「ページが無い」エラーがでます")
IE.document.forms[0].ok.click()

nameを指定するパターンも可能

nameプロパティから取得した値でも指定可能です。
IE.document.forms[0].onamaeとやればname=onamaeとなっているオブジェクトを
指定可能です。
例えばラジオボタンのオブジェクトの場合、同名のものが複数あるケースが多いので
名前指定時にも配列番号で、細かく特定することができます。
以下のスクリプトで見てみましょう。

この投稿の続きを読む »

タグ

2012年10月8日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

COMオブジェクト操作関連

COMオブジェクト操作関連関数

COMについては上級者編で解説されております。
関数を使用した具体的なCOMオブジェクトの活用例は上級者編をご参照下さい。

CREATEOLEOBJ

COMオブジェクト生成
戻値 = CREATEOLEOBJ( COMオブジェクト名 )
引数
 COMオブジェクトを指定
戻値
 COMオブジェクト
なお、COMからメソッド使用時に引数に値取得がある場合
引数の変数の前にVarを付記


GETACTIVEOLEOBJ

既に起動中のCOMオブジェクトを取得
戻値 = GETACTIVEOLEOBJ(COMオブジェクト名,[タイトル, 順番])
引数
 COMオブジェクトを指定
 タイトル: 複数時にタイトルで区別(部分一致可)
 なお、Excel、Access、Wordの場合はファイル名を指定
 IE、Office以外では無効
 順番: IEのみ有効、タイトルが同じ時に区別
戻値
 COMオブジェクト


GETOLEITEM

コレクションの取得
戻値 = GETOLEITEM( コレクションプロパティ名)
引数
 コレクションプロパティ名:COMオブジェクトのコレクション取得プロパティ名を指定
戻値
 取得したコレクションの数
 取得したコレクションは配列変数の
 ALL_OLE_ITEM[ ]に配列ゼロから格納


OLEEVENT

イベント処理の定義
OLEEVENT( COMオブジェクト, インタフェース名, イベント名, Procedure名)
引数
 COMオブジェクトを指定
 インタフェース名: ディスパッチインタフェース名
 イベント名
 Procedure名:UWSC側Procedure
 Procedure内にてイベントの引数は配列変数EVENT_PRM[ ]に配列ゼロから格納


COM_ERR_IGN-COM_ERR_RET

COMエラーメッセージの抑止
COM_ERR_IGN
 ・・・COM処理・・・
COM_ERR_RET
COM処理中のエラーはCOM_ERR_FLG にTRUEが設定


SAFEARRAY

SAFEARRAY型の作成
戻値 = SAFEARRAY( [下限, 上限])
引数
 下限: 配列の下限を設定
 上限: 配列の上限を設定
戻値
 作成されたSAFEARRAY型を返す


タグ

2012年8月16日 | コメントは受け付けていません。 |

カテゴリー:関数一覧

IE.document.forms.elementsから取得できるエレメントの情報

IE.document.forms.elementsからエレメントの情報取得が行えます。
formsというフォームオブジェクトの中には
入力項目等を備えたelementsオブジェクトがあります。
テキストボックスやセレクトボックスなどの各入力項目から
以下のような情報が取得できます。

エレメント
エレメントの総数
IE.document.forms[n].elements.length
エレメントのオブジェクト(フォーム、エレメントともにnに0からの数値を指定)
タイプ
IE.document.forms[n1].elements[n2].type
※selectボックスは”select-one”と取得
名前
IE.document.forms[n1].elements[n2].name
IE.document.forms[n1].elements[n2].value

チェック状態(true=チェック有り、false=チェック無し)
IE.document.forms[n1].elements[n2].checked
checkboxやradioボタンから取得します

クラス名
IE.document.forms[n1].elements[n2].className
id
IE.document.forms[n1].elements[n2].id
uniqueID
IE.document.forms[n1].elements[n2].uniqueID
フォーカス順序(Tabでの移動順)
IE.document.forms[n1].elements[n2].tabIndex
タグ名
IE.document.forms[n1].elements[n2].tagName
クラス名
IE.document.forms[n1].elements[n2].className
セレクトボックス固有のオブジェクト

selectボックスはその中にoptionsオブジェクトがあり、
選択肢の情報を有しています。

選択されているインデックス

IE.document.forms[n1].elements[n2].selectedIndex

選択肢の数(elementsではselectボックスを選択)

IE.document.forms[n1].elements[n2].options.length

選択肢の表示名

IE.document.forms[n1].elements[n2].options[n3].text

選択肢の値

IE.document.forms[n1].elements[n2].options[n3].value

初期選択値か否か(true=初期選択値、false=初期選択値ではない

IE.document.forms[n1].elements[n2].options[n3].defaultSelected

インデックス(0からの番号)

IE.document.forms[n1].elements[n2].options[n3].index

選択状態(true=選択されている、false=選択されていない)

IE.document.forms[n1].elements[n2].options[n3].selected

チェックボックス、ラジオボタン固有のオブジェクト
チェックされているか(true=チェックされている、false=チェックされていない

IE.document.forms[n1].elements[n2].checked

初期状態でチェックされているか(true=チェックされている、false=チェックされていない

IE.document.forms[n1].elements[n2].defaultChecked

というわけで、
具体的にスクリプトを実行させて、結果を見てみましょう。

実行時のイメージ動画は下記の通りです。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
IE.navigate("http://canal22.org/sample0005/")

REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4

FOR n = 0 TO (IE.document.forms.length -1)

 PRINT "<" + (n+1) + "目のフォーム><#CR>"

    PRINT "■エレメントの数:" + IE.document.forms[n].elements.length + "<#CR>"
    PRINT "  エレメントのタイプと名前と値:<#CR>"
    PRINT "  └(type) IE.document.forms[n].elements[i].type" 
    PRINT "  └(name) IE.document.forms[n].elements[i].name"
    PRINT "  └(value) IE.document.forms[n].elements[i].value"
    PRINT "  └(checked) IE.document.forms[n].elements[i].checked"
  FOR i = 0 TO (IE.document.forms[n].elements.length -1)
    PRINT "    └(type:name) " + IE.document.forms[n].elements[i].type + ":" + IE.document.forms[n].elements[i].name
    PRINT "      └(value) " + IE.document.forms[n].elements[i].value
    PRINT "      └(className) " + IE.document.forms[n].elements[i].className
    PRINT "      └(id) " + IE.document.forms[n].elements[i].id
    PRINT "      └(uniqueID) " + IE.document.forms[n].elements[i].uniqueID
    PRINT "      └(tabIndex) " + IE.document.forms[n].elements[i].tabindex
    PRINT "      └(tagName) " + IE.document.forms[n].elements[i].tagName
    
      //セレクトボックスの情報を取得
      IFB IE.document.forms[n].elements[i].type = "select-one"
       PRINT "      └(selectedIndex) " + IE.document.forms[n].elements[i].selectedIndex
       FOR cin = 0 TO (IE.document.forms[n].elements[i].options.length - 1)
       PRINT "        └(options.text) " + IE.document.forms[n].elements[i].options[cin].text
       PRINT "        └(options.value) " + IE.document.forms[n].elements[i].options[cin].value
       PRINT "        └(options.defaultSelected) " + IE.document.forms[n].elements[i].options[cin].defaultSelected
       PRINT "        └(options.index) " + IE.document.forms[n].elements[i].options[cin].index
       PRINT "        └(options.selected) " + IE.document.forms[n].elements[i].options[cin].selected
       NEXT

      ENDIF

      //チェックボックスの情報を取得
      IFB IE.document.forms[n].elements[i].type = "checkbox" OR IE.document.forms[n].elements[i].type = "radio"
       PRINT "      └(checked) " + IE.document.forms[n].elements[i].checked
       PRINT "      └(defaultChecked) " + IE.document.forms[n].elements[i].defaultChecked
      ENDIF


  NEXT
  PRINT "<#CR>---------------<#CR>"

NEXT

nameを指定するパターンでもOK

IE.document.forms[n1].elements[n2]と配列番号で指定していますが、
もちろんnameプロパティから取得した値でも指定可能です。
IE.document.forms[0].onamaeとやればname=onamaeとなっているオブジェクトを
指定可能です。
例えばラジオボタンのオブジェクトの場合、同名のものが複数あるケースが多いので
名前指定時にも配列番号で、細かく特定することができます。
以下のスクリプトで見てみましょう。

この投稿の続きを読む »

タグ

2012年7月24日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

IE.document.formsから取得できるフォームの情報

IE.document.formsからフォームの情報取得が行えます。
フォームと聞くと入力項目フォームが浮かびますが、
それらはformsオブジェクトの中にあるelementsオブジェクトの操作により触れるので、
次以降の記事で言及します。
テキストボックスやセレクトボックスなどのelementsの一つ上のformsオブジェクトから、
フォームの送信先やエンコード方式などの全般的な情報を取得できます。

フォーム
フォームの総数
IE.document.forms.length
フォームのオブジェクト(0からの数値を指定)
送信先
IE.document.forms[0].action
エンコード方式(1)
IE.document.forms[0].encoding
エンコード方式(2)
IE.document.forms[0].enctype
送信形式
IE.document.forms[0].method
ターゲット
IE.document.forms[0].target

というわけで、
具体的にスクリプトを実行させて、結果を見てみましょう。

実行時のイメージ動画は下記の通りです。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = true
IE.navigate("http://canal22.org/sample0004/")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

PRINT "フォーム総数"
PRINT "  IE.document.forms.length=" + IE.document.forms.length
FOR A = 0 TO (IE.document.forms.length - 1)
 PRINT "  " + (A+1) + "番目のフォーム"
 PRINT "    送信先"
 PRINT "    IE.document.forms.action="   + IE.document.forms[A].action
 PRINT "    エンコード方式(1)"
 PRINT "    IE.document.forms.encoding=" + IE.document.forms[A].encoding
 PRINT "    エンコード方式(2)"
 PRINT "    IE.document.forms.enctype="  + IE.document.forms[A].enctype
 PRINT "    送信形式"
 PRINT "    IE.document.forms.method="   + IE.document.forms[A].method
 PRINT "    ターゲット"
 PRINT "    IE.document.forms.target="   + IE.document.forms[A].target
NEXT

resetとsubmitもして見ましょう

IE.document.forms[0].resetでフォームの各項目の入力値がリセット、
IE.document.forms[0].submitでサブミット、送信ができます。
スクリプトおよび実行時の動画は以下の通りです。

この投稿の続きを読む »

タグ

2012年7月23日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

IE.document.imagesから取得できる画像の情報

IE.document.imagesから画像の情報取得が行えます

ページ内画像数
画像数
IE.document.images.length
画像のオブジェクト(0からの数値を指定)
画像ファイル名
IE.document.images[0].nameProp
画像URL
IE.document.images[0].src
プロトコル
IE.document.images[0].protocol
ページ内タグ位置
IE.document.images[0].sourceIndex
ALT属性
IE.document.images[0].alt
TITLE属性
IE.document.images[0].title
枠線
IE.document.images[0].border
class
IE.document.images[0].class
id
IE.document.images[0].id
name
IE.document.images[0].name
ユニークID
IE.document.images[0].uniqueID
高さ
IE.document.images[0].height
横幅
IE.document.images[0].width
読込完了
IE.document.images[0].complete

というわけで、
具体的にスクリプトを実行させて、結果を見てみましょう。
実行時のイメージ動画は下記の通りです。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0003/")

REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

PRINT "■ページ内画像総数:" + IE.document.images.length
FOR A = 0 TO (IE.document.images.length-1)
 PRINT "  ▼画像" + (A+1)
 PRINT "  画像ファイル名:" + IE.document.images[A].nameProp
 PRINT "  画像URL:" + IE.document.images[A].src
 PRINT "  プロトコル:" + IE.document.images[A].protocol
 PRINT "  ページ内タグ位置:" + IE.document.images[A].sourceIndex
 PRINT "  ALT属性:" + IE.document.images[A].alt
 PRINT "  TITLE属性:" + IE.document.images[A].title
 PRINT "  枠線:" + IE.document.images[A].border
 PRINT "  class:" + IE.document.images[A].className
 PRINT "  id:" + IE.document.images[A].id
 PRINT "  name:" + IE.document.images[A].name
 PRINT "  ユニークID:" + IE.document.images[A].uniqueID
 PRINT "  高さ:" + IE.document.images[A].height
 PRINT "  横幅:" + IE.document.images[A].width
 PRINT "  読込状況:" + IE.document.images[A].complete
 PRINT "  -----"
NEXT

指定画像が出てきたらメッセージを出す

それでは、画像オブジェクトの情報を読み込みながら、条件分岐をして見ましょう。
ページにアクセスしていき、指定画像が出現したらメッセージを出します。
スクリプトは以下の通りです。
実行時のイメージ動画は下記の通りです。

この投稿の続きを読む »

タグ

2012年7月22日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

IE.document.linksから取得できる情報、リンクの操作

IE.document.linksからリンクの情報取得、操作が行えます

リンク
リンクの数
IE.document.links.length
リンクのオブジェクト(0からの数値を指定)
ホスト名:ポート
IE.document.links[n].host
ホスト名
IE.document.links[n].hostname
リンク先アンカー
IE.document.links[n].hash
リンク先URL
IE.document.links[n].href
パス名
IE.document.links[n].pathname
ポート
IE.document.links[n].port
プロトコル
IE.document.links[n].protocol
パラメータ
IE.document.links[n].search
ターゲット
IE.document.links[n].target
アンカー
アンカーの数
IE.document.anchors.length
アンカーのオブジェクト(0からの数値を指定)
アンカー名
IE.document.anchors[n].name

というわけで、
具体的にスクリプトを実行させて、結果を見てみましょう。

IE = CreateOleObj("InternetExplorer.Application")
IE.visible = true
IE.navigate("http://canal22.org/sample0001/?hello=myFriend")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

PRINT "■リンクの数"
PRINT "IE.document.links.length=" + IE.document.links.length
  PRINT "-----"
  PRINT "  1:host=ホスト名:ポート"
  PRINT "  2:hostname=ホスト名"
  PRINT "  3:hash=リンク先アンカー"
  PRINT "  4:href=リンク先URL"
  PRINT "  5:pathname=パス名"
  PRINT "  6:port=ポート"
  PRINT "  7:protocol=プロトコル"
  PRINT "  8:search=パラメータ"
  PRINT "  9:target=ターゲット"
  FOR A = 0 TO (IE.document.links.length - 1)
    PRINT "-----"
    PRINT "  1:IE.document.links[" + A + "].host="     + IE.document.links[A].host
    PRINT "  2:IE.document.links[" + A + "].hostname=" + IE.document.links[A].hostname
    PRINT "  3:IE.document.links[" + A + "].hash="     + IE.document.links[A].hash
    PRINT "  4:IE.document.links[" + A + "].href="     + IE.document.links[A].href
    PRINT "  5:IE.document.links[" + A + "].pathname=" + IE.document.links[A].pathname
    PRINT "  6:IE.document.links[" + A + "].port="     + IE.document.links[A].port
    PRINT "  7:IE.document.links[" + A + "].protocol=" + IE.document.links[A].protocol
    PRINT "  8:IE.document.links[" + A + "].search="   + IE.document.links[A].search
    PRINT "  9:IE.document.links[" + A + "].target="   + IE.document.links[A].target
  NEXT
  PRINT "-----"


PRINT "■アンカーの数"
PRINT "IE.document.anchors.length=" + IE.document.anchors.length
  PRINT "  アンカー名"
  FOR A = 0 TO (IE.document.anchors.length - 1)
    PRINT "IE.document.anchors[" + A + "].name=" + IE.document.anchors[A].name
  NEXT 

リンクオブジェクトも上記のように取得できます。

linksオブジェクトにはclickメソッドが行えるほか、
links[n].hrefでURLが取得できるので、IE.navigateに渡して、アクセスもできます。
サンプルのスクリプトを下記に書いてみます。

この投稿の続きを読む »

タグ

2012年7月20日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

IE.documentから取得できる情報

ページにアクセスすると、そのページ内の情報(IE.document)が取得できます

ドキュメント
タイトル
IE.document.title
ドキュメントタイプ
IE.document.doctype
ベース色
背景色
IE.document.bgColor
文字色
IE.document.fgColor
文字コード
文字コード
IE.document.charSet
ブラウザのデフォルト文字コード
IE.document.defaultCharset
リンク文字色
リンク中の文字色
IE.document.alinkColor
リンク文字色
IE.document.linkColor
リンク済の文字色
IE.document.vlinkColor
アンカーオブジェクト
アンカーの数
IE.document.anchors.length
アンカー名(0からの数字を指定)
IE.document.anchors[n].name
クッキー
クッキー
IE.document.cookie
ドメイン
ドメイン名
IE.document.domain
現在のページのURL
IE.document.URL
指定座標上のオブジェクト情報
IE.document.elementFromPoint(X,Y)
リファラ
リファラ
IE.document.referrer

というわけで、ひとつひとつ解説するよりは
具体的にスクリプトを実行させて、結果を見てみましょう。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org/sample0001")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

PRINT "■ドキュメント"
PRINT "  タイトル"
PRINT "    IE.document.title=" + IE.document.title
PRINT "  ドキュメントタイプ"
PRINT "    IE.document.doctype=" + IE.document.doctype
PRINT "■ベース色"
PRINT "  背景色"
PRINT "    IE.document.bgColor=" + IE.document.bgColor
PRINT "  文字色"
PRINT "    IE.document.fgColor=" + IE.document.fgColor
PRINT "■文字コード"
PRINT "  文字コード"
PRINT "    IE.document.charSet=" + IE.document.charSet
PRINT "  ブラウザのデフォルト文字コード"
PRINT "    IE.document.defaultCharset=" + IE.document.defaultCharset
PRINT "■リンク文字色"
PRINT "  リンク中の文字色"
PRINT "    IE.document.alinkColor=" + IE.document.alinkColor
PRINT "  リンク文字色"
PRINT "    IE.document.linkColor=" + IE.document.linkColor
PRINT "  リンク済の文字色"
PRINT "    IE.document.vlinkColor=" + IE.document.linkColor
PRINT "■アンカーオブジェクト"
PRINT "  アンカーの数"
PRINT "    IE.document.anchors.length=" + IE.document.anchors.length

  FOR A = 0 TO (IE.document.anchors.length - 1)
    PRINT "  アンカー名(" + A + ")"
    PRINT "    IE.document.anchors[" + A + "].name=" + IE.document.anchors[A].name
  NEXT

PRINT "■クッキー"
PRINT "  クッキー"
PRINT "    IE.document.cookie=" + IE.document.cookie
PRINT "■ドメイン"
PRINT "  ドメイン名"
PRINT "    IE.document.domain=" + IE.document.domain
PRINT "  現在のページのURL"
PRINT "    IE.document.URL=" + IE.document.URL
PRINT "  指定座標上のオブジェクト情報(ここではx=100,y=100を指定)"
PRINT "    IE.document.elementFromPoint(100,100)=" + IE.document.elementFromPoint(100,100)

//リファラを表示するためにリンクをクリック
IE.document.links[0].click()
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

PRINT "■リファラ"
PRINT "  リファラ"
PRINT "    IE.document.referrer=" + IE.document.referrer

IE.navigate("http://canal22.org/sample0001")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4

どうでしょうか。
IE.documentにある種々の情報が取得できましたか。

それでは、応用編というわけではありませんが、
上記のスクリプトをExcelに出力するというスクリプトにしてみましょう。
ExcelとIEの簡単な連携ですね。それではスクリプトです。

この投稿の続きを読む »

タグ

2012年7月3日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

IEのビジー状態、オブジェクトの状態を取得(busy, readyState)

InternetExplorerがビジー状態なのか、
操作可能な状態なのかを判別します。

・busy
IE.busy = True / False

・readyState
IE.readyState = 0~4

busy
・True・・・ビジー状態である
・False・・・ビジー状態ではない

readyState
・0・・・初期化未完了状態(READYSTATE_UNINITIALIZED)
・1・・・ロード中状態(READYSTATE_LOADING)
・2・・・ロード完了状態(READYSTATE_LOADED)
・3・・・操作可能状態(READYSTATE_INTERACTIVE)
・4・・・全データ読込完了状態(READYSTATE_COMPLETE)

ビジー状態とは、オブジェクトの状態とは?

IE.navigate(URL)で、指定のURLにアクセスできることは既に説明しました。
しかし、URLを指定しアクセスしたからと言って、直ぐにデータが使用できるとは限りません。
インターネットの回線が重かったり、ページのデータ(画像とか)がたくさんあったりする場合、
ページにアクセスしてもなかなか表示がされませんよね。
そんな状態で次の処理を行ったらどうなるでしょう。
ページの読込が全部終わってないのに、「××のデータを××して」と
スクリプトに命令があっても、「そんなデータはページにないよ(本当はあるけど、まだ読込が終わってない)」
とエラーが返ってしまうことになりかねません。

ページの読込が終わるまで待つにはどうしたらよい?

例えば、UWSCのSLEEP(20秒)等、長めに待ってみましょうか。
でもそれってすごく不安定な処理ですよね。
回線やページの重さっていつも一定ではないです。
指定時間より長くかかってエラーになったり、
逆にあっという間に終わってしまい、余計な時間待たされたりすることも。
そこで、IEの状態を取得し、「読込状態」が終わったら次の処理に移るという、
スマートな処理にする方法を使いましょう。
※SLEEPも使いますが最短0.1秒でOK

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org")
REPEAT
 //0.1秒待つ
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readyState = 4
MSGBOX("読込完了!")

どうでしょうか。
実際にページにアクセスしても、
画像などを読み込んだりしているため、きちんと待機していることが分かります。
全ての読み込みが終わったら「読込完了!」のメッセージが表示されます。

busyとreadyStateは何を表す?

busyは英語のビジーです。
オブジェクトが何か別の処理をしていて、「ビジー状態」のときはIE.busyはTrueを返します。
readyStateはオブジェクトがデータを読込しているときの状態を数値で返します。
「0」は「まだ初期化すらしてないよ」という状態、
「1」は「読込中」、「2」は「読込<は>終わった」状態です(読込だけは終わった状態)
「3」は更に一歩進んで、とりあえず「操作はできますよ」という状態です。
砂時計とカーソルの両方が出ているアイコンが出ている状態と思えばOKです。
そして読込は全て完了、自由に操作もできますよという状態が「4」です。
と言うわけで、ループ文の条件は下記の意味となります。

 !IE.busy //IE.busy = Falseと同じ。つまり「ビジー状態」じゃ無くなったらという意味
 IE.readyState = 4 //読込完了した状態 = 4になったら、という意味

ビジー状態とオブジェクトの状態の遷移を見てみよう

それでは、ビジー状態とオブジェクトの状態の遷移を見てみましょう。
以下のスクリプトは2つのIEオブジェクトを立ち上げ、状態の遷移をPRINTしています。
なお、待機状態を判別するループ文はWHILE-WENDでも実現可能ですので
そのパターンも書いてみました。
両者の違いを比べてみるのもいいでしょう。
スクリプトは以下のようになります。

この投稿の続きを読む »

タグ

2012年7月2日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

指定URLへアクセス(navigate)

InternetExplorerのCOMオブジェクトを操作し、
指定URLへアクセスします。

navigateメソッド
IE.navigate(URL)

navigate(URL)
・URL・・・URLを指定

指定URLへアクセス

IEのCOMオブジェクトを生成したら、次に指定URLへアクセスしてみましょう。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://canal22.org")

IEのCOMオブジェクトのnavigateメソッドに
URLを渡すと、アクセスを行います。
ここでは、当Website「http://canal22.org」に遷移するスクリプトとしています。

navigateには何を指定する?

通常、navigateには「http://」で始まるURLを指定します。
しかし、インターネットの情報だけではなく、
ローカルの情報にもアクセスできる事を確認しましょう。
スクリプトは以下になります。

この投稿の続きを読む »

タグ

2012年6月30日 | コメントは受け付けていません。 |

カテゴリー:UWSCとInternetExplorer

このページの先頭へ