IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Webbrowser et tous ses controles


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 125
    Par défaut Webbrowser et tous ses controles
    Bonjour ,
    Je développe un petit navigateur web et je me posait plusieur questions alors j'ai décider de tous les poser dans une seule discution pour réduire le nombre de discussions.

    Alors j'ai 4 problème a vous faire part.

    Problème #1:

    Comment faire pour que ton Navigateur web devienne le navigateur web par défaut de l'ordinateur.

    (aucune idée pour ce probleme)


    Problème #2:

    Il va en fonction du premier:

    Lorsque tu lance par ex: un link donner via Msn avec ton navigateur web, ca ne fonctionne pas. Ca ouvre une fenêtre , mais il navigue a rien


    Problème #3:

    Webbrowser Newwindow? J'ai trouvé plusieurs informations sur ce cas , mais elle fonctionne que seulement avec un navigateur web simple ( sans tabcontrols) alors j'ai testé avec mes tabs , sans aucuns résultat. Elle me donne toujours la même erreur:

    Une erreur s'est produite lors de la création du formulaire. Pour plus d'informations, consultez Exception.InnerException. L'erreur est : L'index 0 est hors limites.
    Nom du paramètre : index
    Voici le code que j'utilise :
    (J'utilise la dll SHDOCVW)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Sub New()
     
            Me.InitializeComponent()
            ' Cast to WebBrowser, so that we can subscribe to the NewWindow2 event
            AddHandler DirectCast(CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance, SHDocVw.WebBrowser).NewWindow2, AddressOf browses_NewWindow2
           End Sub
     
        Private Sub browses_NewWindow2(ByRef ppDisp As Object, ByRef Cancel As Boolean)
            ' Set ppDisp to the instance of IE we want used
            ppDisp = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance
        End Sub

    Problème #4:

    Comment faire pour bloqué les Pop-ups?

    Encore une fois , j'ai une erreur comme celle du Newwindow.
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Sub New()
     
            Me.InitializeComponent()
            ' Cast to WebBrowser, so that we can subscribe to the NewWindow2 event
           AddHandler DirectCast(CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance, SHDocVw.WebBrowser).NewWindow3, AddressOf browses_NewWindow3
     
           End Sub
        Private Sub browses_NewWindow3(ByRef ppDisp As Object, ByRef Cancel As Boolean, ByVal dwFlags As UInteger, ByVal bstrUrlContext As String, ByVal bstrUrl As String)
     
            ppDisp = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance
     
            CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate(bstrUrl)
        End Sub

    Merci grandement do votre aide.
    Si jamais je réussis a régler tous ces problème , ca va être fantastique. Un GROS GROS GROS merci encore a tous ceux qui vont m'aider au développement de mon programme.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par icekev Voir le message
    Problème #1:

    Comment faire pour que ton Navigateur web devienne le navigateur web par défaut de l'ordinateur.

    (aucune idée pour ce probleme)
    C'est dans la base de registre :
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\http\shell\open\command

    Citation Envoyé par icekev Voir le message
    Problème #2:

    Il va en fonction du premier:

    Lorsque tu lance par ex: un link donner via Msn avec ton navigateur web, ca ne fonctionne pas. Ca ouvre une fenêtre , mais il navigue a rien
    L'URL est passée en paramètre de ligne de commande du programme. Tu peux la récupérer dans le Sub Main, ou si tu n'as pas de Sub Main, via Environment.GetCommandLineArgs

    Citation Envoyé par icekev Voir le message
    Problème #3:

    Webbrowser Newwindow? J'ai trouvé plusieurs informations sur ce cas , mais elle fonctionne que seulement avec un navigateur web simple ( sans tabcontrols) alors j'ai testé avec mes tabs , sans aucuns résultat. Elle me donne toujours la même erreur:



    Voici le code que j'utilise :
    (J'utilise la dll SHDOCVW)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Sub New()
     
            Me.InitializeComponent()
            ' Cast to WebBrowser, so that we can subscribe to the NewWindow2 event
            AddHandler DirectCast(CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance, SHDocVw.WebBrowser).NewWindow2, AddressOf browses_NewWindow2
           End Sub
     
        Private Sub browses_NewWindow2(ByRef ppDisp As Object, ByRef Cancel As Boolean)
            ' Set ppDisp to the instance of IE we want used
            ppDisp = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance
        End Sub
    A priori tu n'as pas besoin de SHDOCVW, il y a un évènement NewWindow sur le contrôle WebBrowser... par contre ça ne donne pas l'URL qui va s'ouvrir . On peut peut-être la récupérer via l'évènement Navigating, ça dépend dans quel ordre les évènements se produisent...

    Sinon, l'erreur que tu obtiens se produit à quel endroit ?

    Citation Envoyé par icekev Voir le message
    Problème #4:

    Comment faire pour bloqué les Pop-ups?

    Encore une fois , j'ai une erreur comme celle du Newwindow.
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Sub New()
     
            Me.InitializeComponent()
            ' Cast to WebBrowser, so that we can subscribe to the NewWindow2 event
           AddHandler DirectCast(CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance, SHDocVw.WebBrowser).NewWindow3, AddressOf browses_NewWindow3
     
           End Sub
        Private Sub browses_NewWindow3(ByRef ppDisp As Object, ByRef Cancel As Boolean, ByVal dwFlags As UInteger, ByVal bstrUrlContext As String, ByVal bstrUrl As String)
     
            ppDisp = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance
     
            CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate(bstrUrl)
        End Sub
    Ben en fait ça dépend un peu de la solution du point précédent
    A priori tu peux bloquer la création d'une nouvelle fenêtre en mettant e.Cancel = False dans l'évènement NewWindow

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 125
    Par défaut
    Merci tomlev de m'aider a résoudre le tout. Voici la suite de ce tout.

    Pour le problème numéro 1, je ne suis pas sur de comprendre , je fais mettre sur un button click ceci ? :

    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\http\shell\open\command

    Merci pour comprendre mieu
    ---------------------------------------------------------------

    Problème #2

    JE crois qu'un sub main serai mieu , sauf que je ne sais comment faire. Par contre pour l'option 2 j'ai testé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate(Environment.GetCommandLineArgs)
           end sub
    Seul chose , sa donne une erreur ET toute les fois que tu va lancé le programme sa va navigé a nimporte quoi , alors , pas une bonne idée.
    ---------------------------------------------------------------------
    Erreur 3

    Eh bien pour répondre a ta question , j'ai tenté des chose comme encadre le tous avec des Catch EX as exeption mais bon , sa ne fonctionne pas vraiment , ces bizzare puisque sa devrai fonctionne , mais quand jarrive pour ouvrir une nouvelle fenêtre , sa m'ouvre une fenêtre de IE

    Voici le coude pour la 3 et 4 erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Public Sub New()
            Try
                Me.InitializeComponent()
                ' Cast to WebBrowser, so that we can subscribe to the NewWindow2 event
                AddHandler DirectCast(CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance, SHDocVw.WebBrowser).NewWindow3, AddressOf browses_NewWindow3
                AddHandler DirectCast(CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance, SHDocVw.WebBrowser).NewWindow2, AddressOf browses_NewWindow2
            Catch ex As Exception
            End Try
        End Sub
        Private Sub browses_NewWindow3(ByRef ppDisp As Object, ByRef Cancel As Boolean, ByVal dwFlags As UInteger, ByVal bstrUrlContext As String, ByVal bstrUrl As String)
            Try
                ' There's no cancel on this event, but setting ppDisp prevents a new IE window   
                ppDisp = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance
                ' Unfortunately, the ppDisp does not navigate to the new url. We'll do that manually.
                CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate(bstrUrl)
            Catch ex As Exception
            End Try
        End Sub
        Private Sub browses_NewWindow2(ByRef ppDisp As Object, ByRef Cancel As Boolean)
            Try
                ' Set ppDisp to the instance of IE we want used
                ppDisp = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).ActiveXInstance
            Catch ex As Exception
            End Try
        End Sub
    ----------------------------------------------------------------
    NOUVEAU

    Erreur 5:

    Comment faire pour faire un contextmenustip du webbrowser?
    j'avais commencer a crée mon propre contextmenustrip quand je suis tombé sur ceci: Comment faire pour savoir si l'on doit copier une image ou bien du text , ou bien savoir que ces une image et pouvoir faire enregistré sous ?

    La , je suis mal.
    ----------------------------------------------
    NOUVEAU

    erreur # 6

    Comment faire pour disabler les erreur de script de IE7 : Quand tu navige une page web , des fois , il te sort plusieur erreur de script , je vroudai les cacher , ou bien , quelle n'apparaisse plus.


    MErci grandement de l'aide de tous encore!!!

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par icekev Voir le message
    Pour le problème numéro 1, je ne suis pas sur de comprendre , je fais mettre sur un button click ceci ? :

    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\http\shell\open\command

    Merci pour comprendre mieu
    Moi c'est ta phrase que je comprends pas
    En gros, pour définir ton programme comme navigateur par défaut, il faut que tu mettes le chemin de l'exécutable dans cette clé, à la place de la valeur existante (sans oublier le %1 à la fin qui sera remplacé par l'URL à ouvrir)

    Et en fait, il vaudrai mieux faire pareil avec CURRENT_USER plutôt que LOCAL_MACHINE (LOCAL_MACHINE impacte tous les utilisateurs, et nécessite d'être administrateur)

    Citation Envoyé par icekev Voir le message
    JE crois qu'un sub main serai mieu , sauf que je ne sais comment faire. Par contre pour l'option 2 j'ai testé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser).Navigate(Environment.GetCommandLineArgs)
           end sub
    Seul chose , sa donne une erreur ET toute les fois que tu va lancé le programme sa va navigé a nimporte quoi , alors , pas une bonne idée.
    GetCommandLineArgs renvoie un tableau de chaines. Le premier élément du tableau est le chemin de l'exécutable, les suivants sont les paramètres. En l'occurence, il n'y a qu'un paramètre qui t'intéresse, c'est le premier (sans compter le nom de l'exécutable).

    Donc il faut faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim args As String() = Environment.GetCommandLineArgs()
    If args.Length > 1 Then
        Dim url As String = args(1)
        Dim browser As WebBrowser = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser)
        browser.Navigate(url)
    End If
    Citation Envoyé par icekev Voir le message
    Eh bien pour répondre a ta question , j'ai tenté des chose comme encadre le tous avec des Catch EX as exeption mais bon , sa ne fonctionne pas vraiment , ces bizzare puisque sa devrai fonctionne , mais quand jarrive pour ouvrir une nouvelle fenêtre , sa m'ouvre une fenêtre de IE

    Voici le coude pour la 3 et 4 erreur :

    ...
    Ben ça répond pas vraiment à ma question... je demandais se produisait l'erreur.
    Par contre, la façon dont tu utilises Try/Catch est la plus mauvaise possible : tu interceptes l'exception, mais tu n'en fais rien... Donc tu te contentes de masquer l'erreur, si un problème se produit tu n'en sauras rien du tout !

    Citation Envoyé par icekev Voir le message
    Erreur 5:

    Comment faire pour faire un contextmenustip du webbrowser?
    j'avais commencer a crée mon propre contextmenustrip quand je suis tombé sur ceci: Comment faire pour savoir si l'on doit copier une image ou bien du text , ou bien savoir que ces une image et pouvoir faire enregistré sous ?
    Ca n'a rien à voir avec le problème d'origine, ouvre une nouvelle discussion pour poser la question

    Citation Envoyé par icekev Voir le message
    erreur # 6

    Comment faire pour disabler les erreur de script de IE7 : Quand tu navige une page web , des fois , il te sort plusieur erreur de script , je vroudai les cacher , ou bien , quelle n'apparaisse plus.
    idem => nouvelle discussion

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 125
    Par défaut
    Pour le problème numéro 1 , je pense comprendre maintenant. on se trouve donc a faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Button1_click(byval..)
    HKEY_CURRENT_USER\Monprogramme.exe\Classes\http\shell\open\command
     
    end sub
    Si ce n'est pas sa , dans ce cas , aide moi =D

    --------------------------------------------------------------------
    Alors pour le problème #2 je fais que sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub main()
    Dim args As String() = Environment.GetCommandLineArgs()
    If args.Length > 1 Then
        Dim url As String = args(1)
        Dim browser As WebBrowser = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser)
        browser.Navigate(url)
    End If
    end sub
    Si ce n'est pas sa , corrige moi =D
    --------------------------------------------------------------
    Oh , excuse moi , j'ai oublier de répondre a ta question ici, bon cete fois sans faute. Alors l'érreur se produit au tout début avant même que mon appli peu s'ouvrir.

    Cette eurreur se produit pour les 3 et 4 problème.

    Merci de ton aide encore.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par icekev Voir le message
    Pour le problème numéro 1 , je pense comprendre maintenant. on se trouve donc a faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Button1_click(byval..)
    HKEY_CURRENT_USER\Monprogramme.exe\Classes\http\shell\open\command
     
    end sub
    Si ce n'est pas sa , dans ce cas , aide moi =D
    euh... en fait j'ai l'impression que tu ne sais pas ce que c'est que la base de registre
    "HKEY_CURRENT_USER\Monprogramme.exe\Classes\http\shell\open\command" n'est pas une instruction VB.NET, c'est le chemin d'une clé de la base de registre. Tu peux y accéder manuellement en exécutant le programme regedit.exe. Pour manipuler la base de registre via VB.NET, on utilise la classe Microsoft.Win32.RegistryKey

    Citation Envoyé par icekev Voir le message
    Alors pour le problème #2 je fais que sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub main()
    Dim args As String() = Environment.GetCommandLineArgs()
    If args.Length > 1 Then
        Dim url As String = args(1)
        Dim browser As WebBrowser = CType(TabControl1.SelectedTab.Controls.Item(0), WebBrowser)
        browser.Navigate(url)
    End If
    end sub
    Si ce n'est pas sa , corrige moi =D
    C'est ça, mais en fait c'est un peu plus compliqué que ça... si tu fais comme ça, ta fenetre n'est pas encore initialisée, donc tu ne peux pas accéder à TabControl1. Il faut d'abord créer et afficher la fenêtre...

    Citation Envoyé par icekev Voir le message
    Oh , excuse moi , j'ai oublier de répondre a ta question ici, bon cete fois sans faute. Alors l'érreur se produit au tout début avant même que mon appli peu s'ouvrir.
    "au tout début", ça ne veut rien dire... ce que je te demande, c'est sur quelle instruction ça plante. Pour le déterminer il suffit que tu lances ton application en debug (F5 dans Visual Studio), quand l'erreur se produira VS devrait surligner en jaune la ligne qui provoque l'erreur

Discussions similaires

  1. [VB6] Tous mes controles ont bougés !
    Par fabiofabio dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 12/06/2006, 11h04
  2. Réponses: 4
    Dernier message: 22/03/2006, 10h18
  3. Réponses: 5
    Dernier message: 07/09/2005, 08h27
  4. comment vider une table de tous ses enregistrements ?
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/07/2005, 10h19
  5. redimensionnement d'une fiche et de ses controles
    Par spoony dans le forum C++Builder
    Réponses: 5
    Dernier message: 04/04/2004, 12h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo