none
Iaccessibleオブジェクトで、DoDefaultactionが効かない RRS feed

  • 質問


  • 少々分け合って、IEで開いているWebサイトの[あるボタン]を押す必要があります

    いろいろ検索して調べて
    'IEのハンドル
    hWnd = FindWindow("IEFrame", vbNullString)

    'ウィンドウハンドルからAccessibleオブジェクトへ
    AccessibleObjectFromWindow _ 
          hWnd OBJID_CLIENT, IID_IAccessible, objAcc

    'IEFrame------>Frame Tab 
    Count = objAcc.accChildCount  ' 
    ReDim List(Count - 1) As Variant 
    Ret = AccessibleChildren(objAcc, 0, Count, List(0),Count) 
    '配下のaccオブジェクトを設定 
    Set objAccButton = List(lngCount - 1)

    これを繰り返して、対象のボタンまで下り
    objAccButton.accDoDefaultAction (CHILDID_SELF) 
    msbbox("ボタン押した")
    を実行しているのですが

    (1)ボタンを押して、望んでいる状態になることもある
    (2)DoDefaultActionが効いていない時でも、エラーが出ない、次行のメッセージ「ボタン押した」が出る
    (3)objAccButtonのaccRoleとかaccNameは期待する値を持っており
     このオブジェクトは正しくつかんでいる。
    こんな状態です。

    対象となるサイトは特に複雑なjavascriptや、
    動的に何かしているというページではありません。

    直前に、serForegroundWindow やら
    ループで回して、doevents入れたりしていますがうまく行きません。
    何かヒントだけでもお願いします。
    2022年10月26日 7:51