# WebBrowser Control - NewWindow2 > Objektreferenz



## yvesgay (28. Februar 2004)

Hallo Forum!

Ich hoffe diese Frage wird etwas anspruchsvoller...
sonst brauche ich einen Spaten um mich irgendwo schamrot einzugraben... :sad:

Basierend auf dem WebBrowser Control (Microsoft Internet Controls) habe ich einen Internet-Café Browser geschrieben.
Full-Screen, reduzierte Toolbar, keine Form-Menüs etc., alles funktioniert prima, bis auf das Öffnen von Links "im neuen Fenster".
Dann öffnet er - alleine gelassen - immer einen voll  funktionsfähigen Internet Explorer 

Kurz vorher wird der NewWindow2-Event gefeuert und eigentlich sollte ich ein neues Browserobjekt zuweisen können, daß dann als "neues Fenster" die Navigation fortsetzt.
Im Idealfall also ein neu geladenes Form-Object mit Borderstyle "Werkzeug", darauf ein frisches WebBrowser-Control und das an NewWindow2 übergeben...
aber wie 

Alle bisherigen Versuche bewirken einen Programmabbruch mit der Begründung die geforderte Automatisierung sei vom Objekt nicht unterstützt... 

```
Private Sub  object_NewWindow2( _
	ByRef ppDisp As Object, _
	ByRef Cancel As Boolean)
```
MSDN-Referenz für den NewWindow2-Event

Hat vielleicht schon mal jemand erfolgreich mit dem WebBrowser-Control gearbeitet und von einem Fenster zum nächsten übergeben?

Hoffnungsvoll auf Antworten, Kommentare und Augenöffner wartend, Yves


----------



## thekorn (28. Februar 2004)

*ppDisp definiert?*

auf der MSDN Seite wird dazu auf folgendes hingewiesen:



> Do nothing and do not set ppDisp to any value. This will cause the object that fired the event to create a new InternetExplorer object to handle the navigation.



Es stimmt also unterumständen die ppDisp objektzuweisung nicht.

gruß
thekorn


----------



## yvesgay (28. Februar 2004)

In dem Moment, da NewWindow2 getriggert wird, ist noch *ppDisp = empty*.
Also müsste man doch sagen können *ppDisp = <neu geladenes webbrowsercontrol>* damit ppDisp dann diesem Control die Navigation übergibt... und genau DAS passiert nicht und stattdessen wirft es einen Fehler bezüglich fehlender Objektautomatisurung...:sad:


----------



## thekorn (28. Februar 2004)

*so gehts*

also ich denke,  frei nach MSDN, dass es so gehen müsste:


```
Private Sub WebBrowser1_NewWindow2(ppDisp As Object,
                                   Cancel As Boolean)
   Dim frmWB As Form1
   Set frmWB = New Form1

   frmWB.WebBrowser1.RegisterAsBrowser = TRUE

   Set ppDisp = frmWB.WebBrowser1.Object
   frmWB.Visible = True
End Sub
```

gruß
thekorn


----------



## momoxp (29. Februar 2004)

Super !
Thx das hilft mir auch weiter !
Aber ich hab da ein anderes Problem... Der browser schließt sich manchmal einfach von selbst ! Ich weiß nich aber, ich glaube das hat was mit der progressbar zu tun... Falls ihr mi weiterhelfen könnt, bitte ich darum 

```
Private Sub webBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
If (Progress = -1) Or (ProgressMax = 0) Then
StatusBar1.SimpleText = ""
ProgressBar1.Value = 0
Else
StatusBar1.SimpleText = CStr(Progress * 100 / ProgressMax) & " %"
ProgressBar1.Value = (Progress * 100 / ProgressMax)
DoEvents
End If
Text1.Text = WebBrowser1.LocationURL
End Sub
```
Hätte da noch eine Frage : Wie kann ich möglichst einfach einen Downloadmanager für meinen Browser machen ?
Thx schon mal


----------



## yvesgay (29. Februar 2004)

THX an thekorn 

Erstaunlicherweise liefert die Progress-Eigenschaft im Progress_CHanged bisweilen Ergebnisse über 100%... wenn Du das wegfängst, passt es eigentlich


----------



## momoxp (1. März 2004)

hmm... ^^
Wie meinste das ?


----------



## yvesgay (1. März 2004)

Also ich habe das so gelöst.

```
Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, _
ByVal ProgressMax As Long)
    Dim dummy As Integer
    If Progress = -1 Then
        ProgressBar1.Value = 0
    Else
        If ProgressMax > 0 Then
            dummy = CInt(Progress * 100 / ProgressMax)
            If dummy > 100 Then dummy = 100
            ProgressBar1.Value = dummy
        End If
    End If
End Sub
```
Hth, Yves


----------



## momoxp (2. März 2004)

Jo das hilft...
Aber kann mir einer sagen woran das liegen kann das der browser nicht geschlossen wird wenn man oben rechts auf das x klickt...
Also der browser läuft dann immer noch im hintergrund... (tastkmanager)
also an der progressbar kanns nicht liegen..


----------



## momoxp (3. März 2004)

Keiner mehr was dazu zu sagen ?
Edit : Wie kann ich bei einer toolbar die caption der buttons per besehl ändern ?
Also nicht über die eigenschaftenliste.... Ich will das nämlich individuell machen.
(Die captions in eine datei speichern und auslesen|  speichern/laden is aber nicht das problem)


----------

