スポンサーリンク

UWSCのエラーメッセージで「COM_Error:モジュール 'UWSC.exe'のアドレス〜〜でアドレス00000000に対する読み込み違反がおきました。」が出たら,DOM操作に失敗している

UWSCでスクリプトをコーディングしている際に,よく

    • Uスクリプト:COM_Error:モジュール 'UWSC.exe'のアドレス 0051F480でアドレス00000000に対する読み込み違反がおきました。

のようなエラーメッセージが表示される。


この原因は,十中八九,DOM操作の失敗時。

UWSCは,WebページのHTMLを解析してDOM操作するために頻繁に利用されるから。


ブラウザを自動操作するためには,IEのCOMオブジェクトを生成してマクロを組む。

で,そのオブジェクトに対してnull参照なおかつメソッド呼び出しが発生すると,メモリ上でアドレス00000000に対する読み込み違反が発生する,という理由だ。


対処策としては,

  • HTMLのdocumentの読み込みが完了するまでちゃんとsleepで待機する。
  • DOM操作の間違いをなくす。getElementsByTagNameで取得した要素が,じつは取得に失敗していたりする。そうすると,要素が何もないにも関わらず,その要素に対して操作を行なおうとするので,ヌルポインタのエラーになる。

参考:

UWSC 掲示板:アドレス 0051F480でアドレス00000000に対する読み込み違反
http://www3.bigcosmic.com/board/s/boa...

  • SENDSTR(0,IE,DOCUMENT.BODY,INNERTEXT) 関数のところで
    「Uスクリプト:COM_Error:モジュール 'UWSC.exe'のアドレス 0051F480でアドレス00000000に対する読み込み違反がおきました。」
  • IE.DOCUMENT あるいは IE.DOCUMENT.BODY オブジェクトがきちんと準備できないうちにIE.DOCUMENT.BODY オブジェクトの innerText 属性にアクセスしようとしている可能性
  • ほかのDOM要素が空であるという可能性もありうる


BOTの組み方・作り方 えりいく改マクロ Ver.Prototype を公開します
http://severalwords.blog.fc2.com/blog...

  • たぶんネトゲの自動操作マクロかなんかを作ってる人のページ?
  • COM Error:モジュール'eriikumacro(prototype).exe'のアドレス0053ABCCでアドレス00000000に対する読み込み違反が起きました。
    69行目:IFB POS("森の番人モルボルB",IE2.document.parentWindow.frames[1].document.body.innertext) > 0


table要素が入れ子になている場合などは,特にこの現象が発生しやすい。

getElementsByTagNameの使い方を間違えやすいからだ。

三流君VBA:VBAからIE操作 TABLEの中にTABLE .getElementsByTagNameほか
http://www.ken3.org/vba/backno/vba177...

  • レイアウトをきれいにするためにTABLEタグで細工したHTMLが多いから


タグ内のタグにアクセスする | UWSC コバヤシ式
http://canal22.org/advance/ie/parent-...