Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    203

    CreateObject e condizione Nothing

    Ciao a tutti,

    ho il seguente problema.

    devo creare un oggetto internet application..e fin quì ci sono
    il problema è che ogni volta che clicco su command1 si deve aprire una determinata pagina web

    quindi dentro al command1 metto:

    web = CreateObject("InternetExplorer.application")
    web.Visible = True
    web.ToolBar = 0
    web.Navigate2 "MIOINDIRIZZO"


    funziona perfettamente, ma ogni volta che clicco sul bottone mi apre una nuova finestra Internet Explorer.

    Devo fare in modo che ogni volta che clicco su command1 di vada ad aggiornare la pagina precedente senza crearne altre nuove.

    Ho fatto così:

    if web is Nothing Then web = CreateObject("InternetExplorer.application")
    web.Visible = True
    web.ToolBar = 0
    web.Navigate "MIOINDIRIZZO"


    e devo dire che funziona il risultato è quello che voglio, solo che SE chiudo la finestra di Internet Explorer
    e poi vado a cliccare nuovamente su command1

    il VB6 mi restituisce il seguente errore di debug:

    Run-time error '462':

    The remote server machine soes not exist or is unaviable

    e il programma termina.

    come posso risolvere ?


    Grazie mille in anticipo!!!

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Dove, su quale riga ti da l'errore?

    Ma perchè un usi il componente WebBrowser (inet)?
    E' fatto apposta.


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    203
    Originariamente inviato da gibra
    Dove, su quale riga ti da l'errore?

    Ma perchè un usi il componente WebBrowser (inet)?
    E' fatto apposta.

    Ciao gibra,

    grazie per avermi risposto.

    non uso il componente WebBrowser in quanto mi serve utilizzare Internet Explorer
    non per scelta mia ma aziendale.

    si blocca sulla riga: web.Visible = True

    in pratica è come se quando chiudo internet explorer, (l'oggetto) web non diventi Nothing

    di conseguenza quando vado a premere nuovamente command1 il ciclo if non lo rileva in Nothing e non ricrea l'oggetto....

    come posso risolvere ?

    Grazie ancora

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da S0nic
    non uso il componente WebBrowser in quanto mi serve utilizzare Internet Explorer
    non per scelta mia ma aziendale.
    Scusa, evidentemente ti mancano alcune informazioni importanti...

    Ma tu cosa pensi di star utilizzando quando usi CreateObject("InternetExplorer.application")?
    Guarda che è lo stesso identico controllo!

    La sola differenza (a parte l'interfaccia) è che usando CreateObject() non hai alcun potere di controllare l'oggetto creato.

    E' come creare un foglio Excel da VB, poi l'utente chiude il foglio Excel, e tu rimani lì come uno stoccafisso con l'istanza di Excel 'appesa' nel limbo, con cui non puoi farci niente se non... beccarsi gli errori.

    Altrimenti devi giostrare un po' con l'intercettazione degli errori:

    codice:
    ' Dichiarazioni a livello di Form
    Dim web As Object
    Dim sURL As String
    
    Private Sub Command1_Click()
            
        If web Is Nothing Then
            Set web = CreateObject("InternetExplorer.application")
        End If
        
        web.Visible = True
        web.ToolBar = 0
        
        On Error Resume Next
        web.Navigate2 sURL
        If Err.Number <> 0 Then
            Set web = CreateObject("InternetExplorer.application")
            web.Navigate2 sURL
        End If
        Err.Clear
        On Error GoTo 0
        
    End Sub
    Così non dovrebbe più darti problemi.


  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    203
    Originariamente inviato da gibra
    Scusa, evidentemente ti mancano alcune informazioni importanti...

    Ma tu cosa pensi di star utilizzando quando usi CreateObject("InternetExplorer.application")?
    Guarda che è lo stesso identico controllo!

    La sola differenza (a parte l'interfaccia) è che usando CreateObject() non hai alcun potere di controllare l'oggetto creato.

    E' come creare un foglio Excel da VB, poi l'utente chiude il foglio Excel, e tu rimani lì come uno stoccafisso con l'istanza di Excel 'appesa' nel limbo, con cui non puoi farci niente se non... beccarsi gli errori.

    Altrimenti devi giostrare un po' con l'intercettazione degli errori:

    codice:
    ' Dichiarazioni a livello di Form
    Dim web As Object
    Dim sURL As String
    
    Private Sub Command1_Click()
            
        If web Is Nothing Then
            Set web = CreateObject("InternetExplorer.application")
        End If
        
        web.Visible = True
        web.ToolBar = 0
        
        On Error Resume Next
        web.Navigate2 sURL
        If Err.Number <> 0 Then
            Set web = CreateObject("InternetExplorer.application")
            web.Navigate2 sURL
        End If
        Err.Clear
        On Error GoTo 0
        
    End Sub
    Così non dovrebbe più darti problemi.


    Si non sono un esperto

    cmq ho provato il tutto e funziona davvero bene

    GRAZIE MILLE

    mi hai risolto un problemone!!


    EDIT:

    unico problema è che adesso quando chiudo il programma ci pensa un pò...
    resta in clessidra e dopo circa 30 o 40 secondi si chiude....

    posso risolvere in qualche modo ?

    Grazie ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.