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-...