tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルVB2005 WebBrowserで表示したWord,PDFなどのツールバーを消す方法
記事No3218
投稿日: 2006/02/28(Tue) 18:03
投稿者ツナサンド
[OSのVer]:Windows XP Pro    [VBのVer]:VB2005

VB2005でWebBrowserを用いてWord,PDFなどを表示した時に
上下に表示されるツールバーを消したいのですが方法が分かりません。
VB.NET,VB6とだいぶ変わっており、以前の資料は参考になりません。
どなたかご存じの方、お教え願えないでしょうか。

Me.WebBrowser1.Navigate(FileName)で表示しています。

よろしくお願いします。

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

[ツリー表示へ]
タイトルRe^2: VB2005 WebBrowserで表示したWord,PDFなどのツールバーを消す方法
記事No3221
投稿日: 2006/03/01(Wed) 09:57
投稿者ツナサンド
[OSのVer]:Windows XP Pro  [VBのVer]:VB2005  

YASさん 早速の返信ありがとうございます。
ご教授いただいたとおりやってみました。
見事、ツールバーのないPDFファイルが表示されました。
ありがとうございました。(と言いつつ、厚かましくも)

もう一つ、いや、二つ、お教え願いたいのですが、よろしいでしょうか。

1.PDFファイルを表示したときに、横のスクロールバーは残したいのですが、できますでしょうか。

2.ワード(DOCファイル)の時は、消えなかったのですが、どこを変更すればよろしいでしょうか。

それくらい自分で調べろと言われそうですが、
なにぶんVB(.NET)は、素人に毛が生えたようなもので、
どこをどう調べたらよいかも分かりません。

お手数ですが、よろしくお願いします。

50でやってるプログラマー、ツナサンド

[ツリー表示へ]
タイトルRe^3: VB2005 WebBrowserで表示したWord,PDFなどのツールバーを消す方法
記事No3230
投稿日: 2006/03/02(Thu) 20:36
投稿者YAS
> 1.PDFファイルを表示したときに、横のスクロールバーは残したいのですが、できますでしょうか。

ごめんなさい,ちょっと調べたのですが,わかりませんでした。

> 2.ワード(DOCファイル)の時は、消えなかったのですが、どこを変更すればよろしいでしょうか。

Wordで表示されるツールバーはファンクションキーですか?

Dim Document As Object = e.pDisp.document
Document.Application.CommandBars("Function Key Display").Visible = False

で消える....かと思ったのですが,消えませんねぇ。
う〜ん。これもわかりません。

お役に立てずに申し訳ありません。

[ツリー表示へ]
タイトルRe^4: VB2005 WebBrowserで表示したWord,PDFなどのツールバーを消す方法
記事No3231
投稿日: 2006/03/02(Thu) 23:08
投稿者ツナサンド
[OSのVer]:Windows XP Pro [VBのVer]:VB2005
  
YASさん、どうもありがとうございます。
甘えてしまって、すみませんでした。

当分、教えていただいたやり方でいこうと思います。
PDFのツールバーだけでも消えるので助かります。
ありがとうございました。

50になってもやっているプログラマー、ツナサンドでした。

[ツリー表示へ]