Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

internet explorer newWindow2

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

internet explorer newWindow2

Postdi calculon » 18/03/13 22:23

Ciao a tutti,
avrei necessità di gestire i popup generati dal click di un oggetto javascript.
Vorrei quindi spostare il focus sulla nuova finestra sì da poter acquisire il body del codice html.

pensavo all'evento newwindow2 ma non so come utilizzarlo.

Grazie mille a tutti
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Sponsor
 

Re: internet explorer newWindow2

Postdi Anthony47 » 19/03/13 01:45

Prima di provare a scendere in dettagli, puoi descrivere a grandi linee come stai operando? ad esempio stai automatizzando una procedura? usando quali strumenti? hai gia' del codice da mostrare?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: internet explorer newWindow2

Postdi calculon » 19/03/13 13:31

    Option Compare Database
    Option Explicit

    Dim iePopup As Object
    Dim ie As Object
    Dim ElementCol As Object
    Dim link As Object
    Dim a As String
    Sub pROVA()

    Set ie = CreateObject("InternetExplorer.Application")
    With ie
    .Visible = True
    .Navigate "http://www.w3schools.com/html/html_scripts.asp"
    Do Until .ReadyState = 4: DoEvents: Loop
    Do While .Busy: DoEvents: Loop

    Set ElementCol = ie.Document.getElementsBytagname("a")

    For Each link In ElementCol
    If link.innertext = "Try it yourself »" Then
    link.Click
    Exit For
    End If
    Next link

    Do While ie.Busy
    DoEvents
    Loop

    End With
    a = iePopup

    End Sub

    Private Sub ie_NewWindow2(ppDisp As Object, Cancel As Boolean)
    Set iePopup = ppDisp
    msgbox("funge")
    End Sub

Quello che sto provando è di riuscire a capire se l'evento citato riesce a rilevare l'apertura della nuova finestra.
finora non ci sono riuscito.

:( con questi eventi webbrowser non se ne cava piede...

Come al solito, grazie mille
calculon
Utente Senior
 
Post: 161
Iscritto il: 07/01/11 15:08

Re: internet explorer newWindow2

Postdi Anthony47 » 19/03/13 23:15

Ok, quindi siamo nell' ambito di una automazione ottenuta tramite CreateObject("InternetExplorer.Application")...
Non credo che basti cambiare il focus per cambiare il target di una automazione; quindi se il pop up e' costituita da una finestra InternetExplorer dovresti associare l' oggetto che la tua automazione indirizza alla nuova finestra.
Partendo da quanto avevamo fatto in altra circostanza (vedi viewtopic.php?t=97997) dobbiamo maggiormente articolare quel codice per agganciare con sicurezza la finestra giusta all' oggetto.
Supponiamo che l' automazione sia sull' oggetto IE, allora dopo l' esecuzione del javascript che apre la finestra dovresti usare qualcosa come
Codice: Seleziona tutto
Sub GetIE_WindowEnh()
'Aggancia una sessione IE gia' aperta
Dim IE As Object
Dim objWin As Object, aaa
Dim CUrl
Dim myURL2
myURL2 = "http://www.popuptest.com/popup10.html"     ' <<< Esempio
On Error Resume Next
For Each objWin In CreateObject("Shell.Application").Windows
    With objWin
    aaa = .Name
    If aaa = "Windows Internet Explorer" Then
        CUrl = objWin.LocationURL
        If CUrl = myURL2 Then
            objWin.Visible = True
            Set IE = objWin
            Exit For
        End If
      End If
    End With
Next objWin
On Error GoTo 0

If IE Is Nothing Then     'Se manca, allora...
    Set IE = CreateObject("InternetExplorer.Application")
'    IE.Visible = True
End If
 
'etc etc; esempio:
With IE
    .Visible = True
    .navigate "http://www.pc-facile.com/forum/viewtopic.php?f=26&t=97997"
' etc etc
'etc etc
End With
'etc etc
'
End Sub

In myURL2 ho inserito l' url di una finestra di popup presente sul mio schermo che volevo agganciare alla mia automazione; nel loop successivo ho scandito le varie applicazioni restituite dall' oggetto Shell.Application; di quelle che si qualificavano come " Windows Internet Explorer" ne verifico il proprio LocationURL e se corrisponde al nostro target allora aggancio quell' oggetto all' oggetto IE.
Il codice successivo e' solo per prova, mi serviva ad esempio per dimostrare che la nuova navigazione avveniva nella finestra ex-popup.
Cercando di adattare questo codice alla tua macro ho inserito gran parte di esso in coda, dopo il link.Click, come segue:
Codice: Seleziona tutto
'ESISTENTE:
If link.innertext = "Try it yourself »" Then
link.Click
Exit For
End If
Next link

Do While ie.Busy
DoEvents
Loop

End With
'==============Fine esistente; inizio AGGIUNTO
Dim objWin As Object, aaa
Dim CUrl
Dim myURL2
myURL2 = "http://www.w3schools.com/html/tryit.asp?filename=tryhtml_script"     ' <<<
On Error Resume Next
For Each objWin In CreateObject("Shell.Application").Windows
    With objWin
    aaa = .Name
    If aaa = "Windows Internet Explorer" Then
        CUrl = objWin.LocationURL
        If CUrl = myURL2 Then
            objWin.Visible = True
            Set ie = objWin
            Exit For
        End If
      End If
    End With
Next objWin
On Error GoTo 0

If ie Is Nothing Then     'Se manca, allora...
    Set ie = CreateObject("InternetExplorer.Application")
'    IE.Visible = True
End If

[G1] = ie.document.body.innerHTML
'a = iePopup
End Sub

In questo modo ha agganciato la finestra InternetExplorer aperta dal popup (identificabile dall' url che ho copiato in myURL2) all' oggetto IE, leggendone cosi' il body.innerHtml in cella G1.
Ovviamente avendo accesso al nuovo "document" si possono fare automazioni piu' sensate.

Necessita del riferimento alla libreria Microsoft Internet Controls, come d' altra parte anche l' Event NewWindow2.

In quanto alla gestione di NewWindow2 (che secondo me non ci avrebbe portato da nessuna parte), credo che andrebbe gestito come avevamo cercato di fare con Ie_DocumentComplete qui: viewtopic.php?p=546105#p559131

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "internet explorer newWindow2":

Internet
Autore: ranger
Forum: Reti, ADSL e wireless
Risposte: 5

Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti