喫茶XRAYトップページ

[スレッド全体
]

[6277] Re3:IAccessible返信 削除
2012/8/16 (木) 10:15:50 Mr.XRAY
分かりやすく説明できるか,自信はありません.

例えばActiveXというのがあります.
当サイトには,このActiveX,OCXなどの作成のサンプルなどの記事は
ありません.
一方,ActiveXの取り込み等の記事はあります.
つまり,利用側(クライアント)の使用方法となっています.

 IAccessible インターフェイスのサンプルは,クライアント側,つまり
利用する側のサンプルとなっています.
この IAccessible (MSAA)を実装する記事はありません.
Mozilla であれば,この実装の解説記事があります.
[MSAA サーバーを実装する]
http://www.mozilla-japan.org/access/windows/msaa-server.html

Delphi XE2までには,この{MSAAサーバ]の実装するための機能は
ないようです.
したがって,MSAA(IAccessible)は,既にそれを実装したアプリに
対しての操作ということになります.

>Form1
>  Panel1 - ID1


このIDですが,Windows API を使用すると

  SetWindowLong(Edit1.Handle, GWL_ID, 1000);
  SetWindowLong(Memo1.Handle, GWL_ID, 1100);

のように,各コントロールにID値を設定することができます.
しかし,このID値は,MSAA(IAccessible)のID値とは,全く別のものです.
残念ですが.また,

>ワードとかはリボンまでしかさかのぼれません。

のようです.これはいたし方ありません (^^;
展開して,例えば以下のように[貼り付け]であれば,ChildIDではなく,
nameプロパティの[貼り付け]で区別するしかないようです.
(図は,Windows XP(SP3) + Excel 2007)

で,肝心の

>Button2の座標位置からPanel2→Panel1→Form1の情報を

ですが,う〜ん.どんな方法がいいのか.考えてみます.


[6279] Re4:IAccessible返信 削除
2012/8/16 (木) 12:51:55 Taki
▼ Mr.XRAYさん

マスターありがとうございます。

>  IAccessible インターフェイスのサンプルは,クライアント側,つまり
> 利用する側のサンプルとなっています.


> Delphi XE2までには,この{MSAAサーバ]の実装するための機能は
> ないようです.
> したがって,MSAA(IAccessible)は,既にそれを実装したアプリに
> 対しての操作ということになります.


最初のパネルとボタンの例が悪く誤解を招いてしまいました。
WordやExcel、メモ帳といったアプリケーションのボタンやメニューからの
情報を得たいので、クライアント側での使用?になると思います。
panelに実装するつもりはありません。すみません。

> で,肝心の
>
> >Button2の座標位置からPanel2→Panel1→Form1の情報を
>
> ですが,う〜ん.どんな方法がいいのか.考えてみます.


Wordの「貼り付け」ボタンをクリックするとWordがForgroundWindowになるので
WindowFromAccessibleObjectからEnumAccObjectTreeで展開してLocationと
マウスの座標を比較して「貼り付け」ボタンをみつけ、
そこから逆に親の情報を得ていくという方法が確実なのかもしれません。

しかし、あまりにも遠回りなやり方なので…。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82