タイトル | : Re: VB2005 WebBrowserで表示したWord,PDFなどのツールバーを消す方法 |
記事No | : 3220 |
投稿日 | : 2006/02/28(Tue) 22:27 |
投稿者 | : YAS |
ツナサンドさん,こんばんは。
> VB2005でWebBrowserを用いてWord,PDFなどを表示した時に > 上下に表示されるツールバーを消したいのですが方法が分かりません。
VB.NET2003の AxSHDocVw.AxWebBrowser なら簡単ですが,VB2005のWebBrowserコントロールでは 難しいです。IWebBrowser2インターフェイスが取得できればよいのですが,WebBrowserコントロール のメンバをざっと見たところ見あたりません。
WebBrowser.CreateSinkメソッドのヘルプにDWebBrowserEvent2インターフェイスのイベントを WebBrowserコントロールに補完する例がありましたので,それに習ってDocumentCompleteイベント を実装してみました。(DocumentCompletedイベントではありません。) ^^ DocumentCompleteイベントの引数 e.pDisp からIWebBrowser2インターフェイスを取得できるので Object型変数に代入し,遅延バインディングでAcrobatのメソッドを実行します。
Imports System.Runtime.InteropServices Imports System.Security.Permissions
Public Class Form1
Dim WithEvents WebBrowser As New ExWebBrowser
Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Me.WebBrowser.Dock = DockStyle.Fill Me.Controls.Add(Me.WebBrowser) Me.WebBrowser.Navigate("xxxxxxxx.pdf") End Sub
Private Sub WebBrowser_DocumentComplete(ByVal sender As Object, _ ByVal e As WebBrowserDocumentCompleteEventArgs) Handles WebBrowser.DocumentComplete Dim PDF As Object = e.pDisp.document If PDF IsNot Nothing Then PDF.setShowToolbar(False) PDF.setShowScrollbars(False) Marshal.ReleaseComObject(PDF) End If End Sub End Class
Public Class ExWebBrowser Inherits WebBrowser
Private cookie As AxHost.ConnectionPointCookie Private helper As WebBrowser2EventHelper
<PermissionSetAttribute(SecurityAction.LinkDemand, _ Name:="FullTrust")> Protected Overrides Sub CreateSink() MyBase.CreateSink() helper = New WebBrowser2EventHelper(Me) cookie = New AxHost.ConnectionPointCookie(Me.ActiveXInstance, _ helper, GetType(DWebBrowserEvents2)) End Sub
<PermissionSetAttribute(SecurityAction.LinkDemand, _ Name:="FullTrust")> Protected Overrides Sub DetachSink() If cookie IsNot Nothing Then cookie.Disconnect() cookie = Nothing End If MyBase.DetachSink() End Sub
Public Event DocumentComplete As WebBrowserDocumentCompleteEventHandler
Protected Overridable Sub OnDocumentComplete( _ ByVal e As WebBrowserDocumentCompleteEventArgs) RaiseEvent DocumentComplete(Me, e) End Sub
Private Class WebBrowser2EventHelper Inherits StandardOleMarshalObject Implements DWebBrowserEvents2
Private parent As ExWebBrowser
Public Sub New(ByVal parent As ExWebBrowser) Me.parent = parent End Sub
Public Sub DocumentComplete(ByVal pDisp As Object, ByRef URL As Object) _ Implements DWebBrowserEvents2.DocumentComplete Me.parent.OnDocumentComplete( _ New WebBrowserDocumentCompleteEventArgs(pDisp, CStr(URL))) End Sub
End Class
End Class
Public Delegate Sub WebBrowserDocumentCompleteEventHandler( _ ByVal sender As Object, ByVal e As WebBrowserDocumentCompleteEventArgs)
Public Class WebBrowserDocumentCompleteEventArgs Inherits EventArgs
Private pDispValue As Object Private UrlValue As String
Public Sub New(ByVal pDisp As Object, ByVal Url As String) Me.pDispValue = pDisp Me.UrlValue = Url End Sub
Public Property pDisp() As Object Get Return pDispValue End Get Set(ByVal value As Object) pDispValue = value End Set End Property
Public Property Url() As String Get Return UrlValue End Get Set(ByVal value As String) UrlValue = value End Set End Property
End Class
<ComImport(), Guid("34A715A0-6587-11D0-924A-0020AFC7AC4D"), _ InterfaceType(ComInterfaceType.InterfaceIsIDispatch), _ TypeLibType(TypeLibTypeFlags.FHidden)> _ Public Interface DWebBrowserEvents2
<DispId(259)> Sub DocumentComplete( _ <InAttribute(), MarshalAs(UnmanagedType.IDispatch)> _ ByVal pDisp As Object, _ <InAttribute()> ByRef URL As Object)
End Interface
|