先日の質問でフレームページにアクセスする方法でお力をお貸しいただきありがとうございました。
フレームページにアクセスし、そのフレーム内にあるアンカーやボタンをクリックする事は
できましたが、どうしても特定できないボタンがあり、その時には座標を指定して
WM_LBUTTONDOWN,WM_LBUTTONUPのメッセージを送る事でクリックした事にしようと思っています。
しかし、フレームページ内のウィンドウハンドルの取得方法がわからず行き詰まりました。
どのようにすればウィンドウハンドルが取得できるのでしょうか?
座標からウインドウハンドルを取得できます。
すいません。できないです。Internet Explorer_Serverまででした。
なので、フレームページを単独で開きなおすなど。。かな
> フレームページ内のウィンドウハンドルの取得方法がわからず行き詰まりました。
HTMLDocument 経由でのアクセスが困難な場合は、座標から API 経由での
特定は有効かと思います。ですがそもそも、フレームやボタンに対しては、
ウィンドウハンドル自体が存在しないでしょう。
HTMLページの中で、ウィンドウを持っているものは意外と少なく、
たとえばドロップダウンリストや一部のActiveXコンポーネントなど、
ある程度限定されたものになってしまいますので。
Oleacc.dll)
ただ、ボタン等に関しては、Micrsoft Accessible Explorer ツールなどで
特定することはできるようなので、Oleacc.dll が使えるかも知れません。
処理のイメージとしては、こんな感じですね。
1. AccessibleObjectFromPoint API で、XY座標から、操作対象となる
ボタンの IAccessible インターフェイスを取得する。
2. IAccessible の accDoDefaultAction メソッドで、クリック操作を行う。
http://www.msdn.microsoft.com/library/default.asp?URL=/downloads/list/accessibility.asp
じゃぁ、その座標はどうやって得るんだ? という話になりそうですが…。(^^;
もし座標も不定なら、AccessibleObjectFromWindow API で、親ウィンドウの
IAccessible を得て、そこから accChild / accNavigate メソッド等で
対象のボタンを探す……という手順が必要になるかも知れません。
# 試していません。
魔界の仮面弁士様
いつも勉強させていただいております。
時間の空いた時にできるか確認してみたいと思います。
魔界の仮面弁士さん、ヤマ@文系さん。
いつもありがとうございます。
レスいただいた内容をヒントにいろいろ試行錯誤してみましたが、私にはとても理解ができませんでした。
具体的には左右に分割されたフレームがあり、最初のフレームページ内の
特定の位置(たとえば、100×100)にボタン(実際はボタンではなくイメージ)があります。
このボタンをマウスでクリックしたいと思っております。
ウインドウ内の特定の位置をマウスでクリックするには、どの様にするのでしょうか?
よろしくお願いいたします。
フレームは特定できているんだから、そのフレームの Document は手に入りますよね。
IHTMLDocument2 インターフェイス(要は Document ですか)には elementFromPoint メソッドがありますよ。
Hongliang さん、お返事ありがとうございます。
elementFromPointでオブジェクトを特定して、それに対してマウスイベントを発生させる事はできるのでしょうか?
ツイート | ![]() |