Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0587: NewWindow-Event des Webbrowser-Steuerelements richtig nutzen

 von 

Beschreibung 

Wenn man in einem selbstgeschriebenen Internet-Browser einen Link in einem neuen Fenster öffnet, möchte man meistens, dass das neue Fenster nicht der Standardbrowser, sondern die eigene Anwendung ist. In diesem Fall benötigt man das NewWindow-Event des WebBrowser Controls. Hier wird gezeigt, wie man es richtig nutzt.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [4,13 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'----------- Anfang Projektdatei minibrowser.vbp  -----------
' Die Komponente 'Microsoft Windows Common Controls 6.0 (SP6) (MsComCtl.ocx)' wird benötigt.
' Die Komponente 'Microsoft Internet Controls (SHDOCVW.dll)' wird benötigt.

'---- Anfang Formular "frmBrowser" alias frmBrowser.frm  ----
' Steuerelement: Toolbar "tbToolBar"
' Steuerelement: Webbrowsercontrol "brwWebBrowser"
' Steuerelement: Bildfeld-Steuerelement "picAddress"
' Steuerelement: Textfeld "txtaddress" auf picAddress
' Steuerelement: Beschriftungsfeld "lblAddress" auf picAddress
' Steuerelement: Bilderlistenelement "imlIcons"

Option Explicit


Private Sub brwWebBrowser_NewWindow2(ppDisp As Object, Cancel As Boolean)
'neues Formular laden
    Dim frmNew As frmBrowser
    Set frmNew = New frmBrowser
    
'neues Formular ein bischen verschieben
    frmNew.WindowState = vbNormal
    frmNew.Top = frmNew.Top + 1200
    frmNew.Left = frmNew.Left + 1200
    Set ppDisp = frmNew.brwWebBrowser.Object   'das hier ist der Trick
    frmNew.Show
End Sub



'Die folgenden Funktionen steuern allgemein den Browser und das Formular

Private Sub brwWebBrowser_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
txtaddress.Text = brwWebBrowser.LocationURL
End Sub

Private Sub brwWebBrowser_TitleChange(ByVal Text As String)
Me.Caption = Text & " - Browser" 'Neue Beschriftung zuweisen
End Sub

Private Sub Form_Load()
brwWebBrowser.GoHome 'Am Anfang zur Startseite navigieren
End Sub


Private Sub txtAddress_KeyPress(KeyAscii As Integer)
    If KeyAscii = vbKeyReturn Then
    brwWebBrowser.Navigate txtaddress.Text
    End If
End Sub

Private Sub Form_Resize()
    txtaddress.Width = Me.ScaleWidth - 80
    brwWebBrowser.Width = Me.ScaleWidth - 100
    brwWebBrowser.Height = Me.ScaleHeight - (picAddress.Top + picAddress.Height) - 50
End Sub


Private Sub tbToolBar_ButtonClick(ByVal Button As Button)
'Die Toolbar verarbeiten
    Select Case Button.Key
        Case "Back"
            brwWebBrowser.GoBack
        Case "Forward"
            brwWebBrowser.GoForward
        Case "Refresh"
            brwWebBrowser.Refresh
        Case "Home"
            brwWebBrowser.GoHome
        Case "Search"
            brwWebBrowser.GoSearch
        Case "Stop"
            brwWebBrowser.Stop
    End Select
End Sub

'----- Ende Formular "frmBrowser" alias frmBrowser.frm  -----
'------------ Ende Projektdatei minibrowser.vbp  ------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 8 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Michael Müler am 04.04.2006 um 13:36

Hallo,

gibt es auch eine möglichkeit zu verhindern, dass ein neues Fenster aufgeht. So, dass der User immer nur im "original" bleibt?

Gruß!

Kommentar von Jonathan am 31.07.2004 um 11:20

@ Dennis:
Scheint wohl ein merkwürdiger Fehler zu sein. Es würde helfen, wenn du einen Link zu der Seite, wo das fehlerhafte Popup kommt postest.

@ Bert:
Im Navigate_Complete2()-Ereignis wir ja ein pdisp-Objekt übergeben. Vielleicht klappt es auch hier, ein neues Formular zu laden, und dann
Set pDisp = frmNew.brwWebBrowser.Object

@ Paul:
Du solltest dein Startformular nicht im Form_Load() zuweisen, sondern in einer Sub_Main dein erstes Formular laden, und dem auch gleich die Adresse zuweisen.

Kommentar von Paul O. Schenker am 31.07.2004 um 08:56

Mein Browser-Form enthält in der Form-Load-Routine eine automatische Eintragung der zuletzt ausgewählten URL. Wie kann ich verhindern, dass mir beim NewWindow2-Event stets diese Adresse anstelle des vom Benutzer neu gewählten URL's geladen wird?

Kommentar von Bert am 19.10.2003 um 17:24

Der Tip ist gut, nur überschreibt er ständig das aktuelle Fenster, kann man das nich so machen das er für jeden Link n neues Fenster aufmacht ohne zu überschreiben ?

Kommentar von Dennis Lassiter am 19.08.2003 um 19:50

Andere Popups lassen sich öffnen.
Speziell dieser Popup gibt mir immernoch ein Fehler zurück.
Es öffnet sich eine Seite, aber trotzdem kommt ein Fehler... (es wird u.a. keine Seite angezeigt.

Kommentar von Jonathan Haas am 19.08.2003 um 17:29

Ok. Fehler gefunden.

Es liegt daran, dass sich der Webbrowser irgendwie selbstständig an eine andere Position verschiebt.

Du musst also nur per Code die Position des Browsers zurücksetzen (z.b. mit einem Timer oder so...)

Also z.B. per Timer

Call brwWebBrowser.Move(50, 1215, Me.ScaleWidth - 100, Me.ScaleHeight - (picAddress.Top + picAddress.Height) - 50)

Kommentar von Jonathan am 19.08.2003 um 09:38

Könntest du mal ein Beispiel machen, wo der Fehler auftritt?

Kommentar von Dennis Lassiter am 10.08.2003 um 20:40

Bei mir gibt es probleme mit dem Javascript: window.open