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

タイトル Re: VB2005 WebBrowserで表示したWord,PDFなどのツールバーを消す方法
投稿日: 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

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

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