vb.netでフレーム内のボタンにSendMessageを送るには?


ごろう  2006-10-11 01:34:56  No: 96867

先日の質問でフレームページにアクセスする方法でお力をお貸しいただきありがとうございました。

フレームページにアクセスし、そのフレーム内にあるアンカーやボタンをクリックする事は
できましたが、どうしても特定できないボタンがあり、その時には座標を指定して
WM_LBUTTONDOWN,WM_LBUTTONUPのメッセージを送る事でクリックした事にしようと思っています。
しかし、フレームページ内のウィンドウハンドルの取得方法がわからず行き詰まりました。
どのようにすればウィンドウハンドルが取得できるのでしょうか?


ヤマ@文系  2006-10-13 09:29:56  No: 96868

座標からウインドウハンドルを取得できます。


ヤマ@文系  2006-10-13 09:34:13  No: 96869

すいません。できないです。Internet Explorer_Serverまででした。
なので、フレームページを単独で開きなおすなど。。かな


魔界の仮面弁士  2006-10-13 18:45:29  No: 96870

> フレームページ内のウィンドウハンドルの取得方法がわからず行き詰まりました。

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 メソッド等で
対象のボタンを探す……という手順が必要になるかも知れません。

# 試していません。


ヤマ@文系  2006-10-13 20:39:53  No: 96871

魔界の仮面弁士様
いつも勉強させていただいております。
時間の空いた時にできるか確認してみたいと思います。

'キャッシュですが参考
http://72.14.235.104/search?q=cache:AMwgJZ630v4J:www2.moug.net/bbs/exvba/20051124000053.htm+accChild+%EF%BD%96%EF%BD%82&hl=ja&gl=jp&ct=clnk&cd=1


ごろう  2006-11-01 00:41:24  No: 96872

魔界の仮面弁士さん、ヤマ@文系さん。

いつもありがとうございます。

レスいただいた内容をヒントにいろいろ試行錯誤してみましたが、私にはとても理解ができませんでした。

具体的には左右に分割されたフレームがあり、最初のフレームページ内の
特定の位置(たとえば、100×100)にボタン(実際はボタンではなくイメージ)があります。
このボタンをマウスでクリックしたいと思っております。

ウインドウ内の特定の位置をマウスでクリックするには、どの様にするのでしょうか?

よろしくお願いいたします。


Hongliang  URL  2006-11-01 02:44:40  No: 96873

フレームは特定できているんだから、そのフレームの Document は手に入りますよね。
IHTMLDocument2 インターフェイス(要は Document ですか)には elementFromPoint メソッドがありますよ。


ごろう  2006-11-01 22:30:40  No: 96874

Hongliang さん、お返事ありがとうございます。

elementFromPointでオブジェクトを特定して、それに対してマウスイベントを発生させる事はできるのでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加