tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルIAccessbileオブジェクトでメニューが選択できない
記事No16452
投稿日: 2018/08/20(Mon) 16:35
投稿者jusu
連続で、申し訳ないです。
ちょっと状況が違うので、新たに起こしました

引き続きアプリケーションの自動処理ということで
アプリケーションのメニューを押すことを試みています。
GetMenuItemInfo API  + SendMessage(ハンドル, BM_CLICK, 0, 0)
では成功しているのですが、タイミングによって効かない事もあるので
IAccessbleにて、できないか試しています。

プログラムの一部
’宣言部 略
Private Enum NVADIRConstants
    NAVDIR_MIN
    NAVDIR_UP
    NAVDIR_DOWN
    NAVDIR_LEFT
    NAVDIR_RIGHT
    NAVDIR_NEXT
    NAVDIR_previous
    NAVDIR_FIRSTCHILD
    NAVDIR_LASTCHILD
    NAVDIR_max
End Enum

'main 略
AccessibleObjectFromWindow (HWnd, OBJID_CLIENT, IID_IAccessible, objAcc)
'--アプリケーションメニューバー選択まで略
lngCount = objAcc.accChildCount  
ReDim list(Count - 1) As Variant
lngRet = AccessibleChildren(objAcc, 0, Count, list(0), Count)  
Set objAcc = list(3) '左から4つめのメニューを選択

Count = objAcc.accChildCount  '1段下オブジェクト(7つ)
ReDim list(Count - 1) As Variant
lngRet = AccessibleChildren(objAcc, 0, Count, list(0), Count)
Set objAcc = list(0) 'コンテキスト(ポップアップ)を選択
  
lngCount = objAcc.accChildCount  '1段下オブジェクト(7つ)
ReDim list(Count - 1) As Variant
lngRet = AccessibleChildren(objAcc, 0, Count, list(0), Count)
Set objAcc = list(5) 'メニュー5 を選択
  
ここの「メニュー5を選択」のところで「オブジェクトが必要です」というエラーになります
accExplorerでは次のメニューオブジェクトが見えてるのですが、、、

ちょと気になるのが
child = objAcc.accNavigate(NAVDIR_FIRSTCHILD, CHILDID_SELF)
が、navidir_upなどの他の定数(方向)、および、どのobjAccからも実行できない
(プロシージャー、引数が不正)
objAcc.accName がどのobjaccでもエラー(上同)

また、Dim objAcc As IAccessible の宣言で Dim objAcc As  まで入力した時に
IAccessbleが候補にでないということが気になっています
IAccessbleは、system32 のoleaccを参照していますが、参照設定からみるとsyswow64になっています
また、環境がwin10+VB6というのが弱いところなのですが、、、  



    

[ツリー表示へ]