No Programming, No Life

プログラミング関連の話題や雑記

取得はできたがonChangeイベントが拾えない

前の IE制御 - No Programming, No Life の続き。


GETACTIVEOLEOBJを取得してくる前に、IEの状態が
BUSYだったり、READYSTATE4じゃなかったりするのを
見忘れていました。

↓こんな感じで待ってやるといいみたいです。

REPEAT
SLEEP(0.1)
UNTIL !IE.BUSY AND IE.READYSTATE4

準備OKになってから、操作しないとダメですよね。

あと、GETACTIVEOLEOBJでオブジェクトを取得してくる場合、
nullの場合の考慮が前は抜けていたので取得できませんでした。
nullだと ERR_VALUE(-999999)が返ってくるみたいなので、
それでnullかどうかを判定するようにすればいい感じです。

IF IE = ERR_VALUE THEN ....

みたいな感じで操作するとよさげです。


そして次の課題が浮上。
取得したIEにプルダウン項目があって、そいつをCOM(というかJavascript)を駆使して
selectedIndexあたりを直接書き換えて選択されている内容を変更しているのですが、
実はプルダウンにはonChangeイベントが仕込まれていて、
上記のように強引に変更したのではonChangeイベントを拾ってくれません。
拾ってくれないので、イベントも発生せずに困っています。
直接定義されているJavascriptの関数を呼び出せればいいんですが、
知識不足のため、やり方がよくわかりません。
直接関数を呼び出すじゃなくて、onChangeイベントを無理矢理発生させるでも
OKなんですけどね。とりあえず調査します。