tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: ACCESS2010(VBA)のWebブラウザーコントロールの右クリック制御について
投稿日: 2016/06/26(Sun) 16:15
投稿者魔界の仮面弁士
> Microsoftが提供されていたとされるWBCustomizer.dllを使用する、とか、
DLL そのものは提供されていなかった気がします。
WBCustomizer.dll を作るためのサンプルコード(VC++ 5.0)なので、
自分でビルドする必要があったような…うろ覚え。

有志がビルドした物であれば、Microsoft 非公式で何箇所かにあるようですが、未確認です。


> 有志の方が作られたタイプライブラリを使用するという方法が散見されましたが
> 入手することが出来ないようです。
ライブラリを用意するのがもっとも簡単なのでしょうけれどね。

技術的には、COM の低レベル API を呼び出すことで、IDocHostUIHandler の実装を
参照設定せずに呼び出すことが出来るかもしれませんが、煩雑なので現実的では無いでしょうね。
そうしたサンプルはネット上に無さそうですし、独力での実装が必要になってしまうはず。


> なお、javascriptを用いることも考えましたが、今回は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


※注:一つ目の URL にある「プロシージャ属性」を指定するための画面は、
 VBA には用意されていません。そのため、一旦 .cls ファイルとしてエクスポートしてから
 メモ帳等で属性を追加し、再度インポートしなおすことで対処してみてください。
 http://note.phyllo.net/?eid=1106050


※注:三つ目の URL にある UserControl は、Access では使えません。
 このサンプルでは配列として各所のイベントを拾う形にしていますが、
 単一の上位要素でイベントバブルを辿ることで代用できないか試してみてください。


> 何かいい方法をご存じの方がいらっしゃいましたら、教えて頂ければ幸いです。
「いい方法」と言えるかどうかは分かりませんが、たとえば Form の Timer イベントで
現在のマウス座標を定期的に調べて(GetCursorPos API など)、
そこからアクセシビリティ オブジェクトを得て判断するのはどうでしょう。

UIAutomationClient ライブラリ(UIAutomationCore.dll) を参照設定して
CUIAutomation オブジェクト → ElementFromPoint メソッドと辿るとか、
あるいは古い方法ですが、AccessibleObjectFromPoint API あたりから
IAccessible を得るとか。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。