現在VB6.0で開発しています。
WebBrowserを右クリックすると表示されるメニューをカスタマイズする
ことは可能なのでしょうか。実際に使用したいメニューは「コピー」だけで
「印刷」は表示させないようにしたいのです。
「WBCustomizer.dll」を使用したらできるのではないかと思い、
下記のソースコードを実行してみましたが右クリックメニューが
表示されなくなり、文字選択もできなくなってしまい、やりたいこと
ができませんでした。
dim obj As WBCustomizer
Set obj = New WBCustomizer
With obj
.EnableContextMenus = False
.EnableAllAccelerators = False
Set .WebBrowser = brwReport
End With
メニューをカスタマイズは無理なのでしょうか。
経験のある方がおられたら、よろしくお願い致します。
IDocHostUIHandler インターフェイスの ShowContextMenu メソッドを
実装する事になるかと思います。なので VB6 ではなく、
WBCustomizer.dll 側で実装した方が良いかと思いますよ。
無修正の WBCustomizer.dll のままなら、DirectInput でマウスを追跡し、
右クリック時に VB6 の PopupMenu メソッドを呼ぶようにするとか。
返信有難うございます。
無修正の WBCustomizer.dll で実装したいので、
過去LOGで、魔界の仮面弁士さんが書いたDirectInputのサンプルを
見つけて早速テストプログラムを作成してみました。
DIMOFS_BUTTON1が右クリックのようだったのでメニューを出すことは
できました。
ただ、下記のコードを残している為、WebBrowserの文字をマウスで
選択することができないのです。教えて頂いて、あと少しでという
ところなのにとても悔しくてなりません。何か策はありますでしょうか。
dim obj As WBCustomizer
Set obj = New WBCustomizer
With obj
.EnableContextMenus = False
.EnableAllAccelerators = False
Set .WebBrowser = brwReport
End With
よろしくお願い致します。
であれば、こうかな。
'---------
Option Explicit
Implements IDocHostUIHandler
Private CustomDoc As ICustomDoc
Private Sub Form_Load()
WebBrowser1.Navigate2 "http://www.google.co.jp/"
Do
DoEvents
Set CustomDoc = WebBrowser1.Document
Loop While CustomDoc Is Nothing
CustomDoc.SetUIHandler Me
End Sub
Private Sub IDocHostUIHandler_ShowContextMenu( _
ByVal dwContext As ContextMenuTarget, _
ByRef pPOINT As olelib.POINT, _
ByVal pCommandTarget As IOleCommandTarget, _
ByVal HTMLTagElement As Object)
Debug.Print HTMLTagElement.tagName, "("; pPOINT.x; ","; pPOINT.y; ")", dwContext
Me.PopupMenu Me.mnuSample
End Sub
'以下、IDocHostUIHandler メンバに対する空っぽのプロシージャ実装
Private Sub IDocHostUIHandler_EnableModeless(ByVal fEnable As BOOL)
End Sub
Private Function IDocHostUIHandler_FilterDataObject(ByVal pDO As IDataObject) As IDataObject
End Function
'--以下略---
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200311/03110001.txt
ソースまで書いて頂き有難うございます。
試してみます。ちょっと時間がないためまた報告致します。
ツイート | ![]() |