none
Lancer le navigateur a partir d'un champ texte de base de données. RRS feed

  • Question

  • Bonjour.

    Bonjour.

    Je sens que je suis nul mais j'essaye de trouver une solution :
    quand j'ouvre mon application je vais chercher le chemin de mon navigateur qui est inscrit dans un fichier texte (nav.txt) que vous voyez en haut droite chemin nav :

    en DbClick sur un champ contenant une information d'url pour moi le champ s'appelle (Http0TextBox) et qui contient le http suivant (http://zlio.com)

    j'ai mis la fonction suivante :
    Private Sub Http0TextBox_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Http0TextBox.DoubleClick
            Dim xnav As String
            Clipboard.Clear()

            Me.Sit1DataSet.DataSetName = "http0"
            xnav = Me.cheminnavTextBox1.Text + "\"
            Dim procID As Boolean
            procID = Shell(Me.Http0TextBox.Text, Nothing.ToString)
        End Sub
    je veux lancer le navigateur inscrit dans chemin nav : champ qui s'appelle (cheminnavTextBox1) et j'ai
    l'erreur suivante : L'exception System.NullReferenceException n'a pas été gérée
      Message=La référence d'objet n'est pas définie à une instance d'un objet.
      Source=sit
      StackTrace:
           à sit.sit1.Http0TextBox_DoubleClick(Object sender, EventArgs e) dans C:\Coach VB\sit0\sit\sit1.vb:ligne 46
           à System.Windows.Forms.Control.OnDoubleClick(EventArgs e)
           à System.Windows.Forms.TextBoxBase.OnMouseUp(MouseEventArgs mevent)
           à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
           à System.Windows.Forms.Control.WndProc(Message& m)
           à System.Windows.Forms.TextBoxBase.WndProc(Message& m)
           à System.Windows.Forms.TextBox.WndProc(Message& m)
           à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
           à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
           à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
           à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
           à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
           à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
           à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
           à System.Windows.Forms.Application.Run(ApplicationContext context)
           à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
           à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
           à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
           à sit.My.MyApplication.Main(String[] Args) dans 17d14f5c-a337-4978-8281-53493378c1071.vb:ligne 81
           à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
           à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
           à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
           à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
           à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
           à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
           à System.Threading.ThreadHelper.ThreadStart()
      InnerException:

    avec vb5 c'est facile :  x = Shell(xNav + Space(1) + inst.http00.Text, 1)

    Je demande a tous ceux qui connaissent bien Microsoft visual basic 2010 express si vous avez du temps
    de me proposer une solution S.V.P.


    jeudi 10 mars 2011 17:42

Réponses

  • En mettant un TextBox sur une form et ce code :
     Private Sub TextBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.DoubleClick
      Try
       VisitLink()
      Catch ex As Exception
       MessageBox.Show("Impossible d'ouvrir le lien dans votre navigateur.")
      End Try
     End Sub
    
     Sub VisitLink()
      System.Diagnostics.Process.Start(TextBox1.Text)
     End Sub
    
    Cela fonctionne sans que l'on ait besoin de donner l'adresse du navigateur, serait-ce suffisant?
    Cordialement Pascal http://www.scalpa.info
    • Marqué comme réponse papou78 samedi 12 mars 2011 16:09
    samedi 12 mars 2011 15:12

Toutes les réponses

  • Bonjour,

    Nothing.ToString ne peut pas fonctionner (on essaie d'appeler une méthode sur un objet qui n'existe pas ce qui est le sens de tous les messages "NullReferenceException").

    Un coup d'oeil rapide dans la doc montre que le deuxième paramètre serait optionel, donc ne rien mettre du tout si la valeur par défaut convient.

    Pas lié directement au problème mais si on finissait par avoir besoin d'un contrôle plus fin se tourner éventuellement vers http://msdn.microsoft.com/fr-fr/library/system.diagnostics.process.start.aspx, Shell étant sans doute fourni plus pour assurer une certaine continuité avec la méthode disponible dans les versions "pré.NET" de VB...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    vendredi 11 mars 2011 12:24
    Modérateur
  • En mettant un TextBox sur une form et ce code :
     Private Sub TextBox1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.DoubleClick
      Try
       VisitLink()
      Catch ex As Exception
       MessageBox.Show("Impossible d'ouvrir le lien dans votre navigateur.")
      End Try
     End Sub
    
     Sub VisitLink()
      System.Diagnostics.Process.Start(TextBox1.Text)
     End Sub
    
    Cela fonctionne sans que l'on ait besoin de donner l'adresse du navigateur, serait-ce suffisant?
    Cordialement Pascal http://www.scalpa.info
    • Marqué comme réponse papou78 samedi 12 mars 2011 16:09
    samedi 12 mars 2011 15:12
  • Tout à fait. Si on indique un document (ou une adresse web), le document sera ouvert par l'application associé à ce type de document exactement comme lorsque l'utilisateur double clique sur un fichier.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    samedi 12 mars 2011 15:46
    Modérateur
  • Bonjour

    Merci de tout j'ai cherché un peu plus compliqué en écrivant un fichier bat qui lance iexplore.exe avec mon http marqué dans la ligne de texte.

    Mais avec votre formule exemple :

    System.Diagnostics.

     

    Process.Start(Me.Http0TextBox.Text)

    j'ai bien le navigateur qui s'ouvre sur le http du texte c'est super !

    Amicalement papou78 alexis.balme@neuf.fr

    Mais rien que

    samedi 12 mars 2011 16:18