タイトル : Re^2: ACCESS2010(VBA)のWebブラウザーコントロールの右クリック制御について 投稿日 : 2016/06/26(Sun) 19:11 投稿者 : あーちゃ
魔界の仮面弁士様、レスありがとうございます。 > DLL そのものは提供されていなかった気がします。 > WBCustomizer.dll を作るためのサンプルコード(VC++ 5.0)なので、 > 自分でビルドする必要があったような…うろ覚え。 まさに魔界の仮面弁士様が、そう書かれている過去ログがありまして、目は通しておりました。 C++のコンパイラもないと出来ない、持ってる方に頼むしかない、とおっしゃってたと思います。 > 「いい方法」と言えるかどうかは分かりませんが、たとえば Form の Timer イベントで > 現在のマウス座標を定期的に調べて(GetCursorPos API など)、 > そこからアクセシビリティ オブジェクトを得て判断するのはどうでしょう。 > > UIAutomationClient ライブラリ(UIAutomationCore.dll) を参照設定して > CUIAutomation オブジェクト → ElementFromPoint メソッドと辿るとか、 > あるいは古い方法ですが、AccessibleObjectFromPoint API あたりから > IAccessible を得るとか。 UIAutomationClient を使用した方法も考えたのですが、 環境によってなのか、参照設定を行う際にエラーが発生するようでしたので、 (実際、私の環境では UIAutomationCore.dll の場所がデスクトップになってます) 作成物を配布するため、そのことを考慮すると選択できませんでした。 ご提示頂いた 3つめの方法を試し、リンクをクリックしたらVBAに処理を渡す、という処理には成功しました。 > 理由が良く分かりませんが、 > Private WithEvents Doc As MSHTML.HTMLDocument > などとして、HTML DOM のイベントバブルを辿るのも駄目なのでしょうか? > http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200407/04070038.txt > http://hanatyan.sakura.ne.jp/vb60bbs/wforum.cgi?mode=allread&no=12469&page=0 > http://www.gizcollabo.jp/vbtomo/log/archive/vbqanda2_403_2.html 全く javascript を使えない、という訳ではないのですが、単純に用いない方法があれば VBA のみで実装してみたい、というのが本当のところでした。 (html を毎度生成していて、付随するコードで煩雑になるのを避けたいというのも少しあります) ただ、仰る通り、javascriptのイベントバブルを辿らない限りは、 今の私の技量では実現できなさそうですので、考え直したいと思います。 先の目途も立ちそうですので、ここでクローズさせて頂きます。 分かりやすいご説明をして下さり本当にありがとうございました。 |