[C#]Comment récupérer l'url d'une page web ?

Skartt -  
Nico# Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je voudrais savoir comment récupérer l'url de la page internet sur laquelle on se trouve avec C#. Par exemple, si une page est ouverte et qu'on lance le programme, il s'affiche l'adresse dans la console.
Merci de votre aide !

1 réponse

  1. Nico# Messages postés 328 Date d'inscription   Statut Membre Dernière intervention   102
     
    bonjour,

    tu peut le faire avec de l'interop

    un truc comme ça

    #region API : Methodes
        // version utilisée pour WM_GETTEXTLENGTH
        [DllImport("user32.dll")]
        private static extern int SendMessage (
        IntPtr hWnd,
        uint message,
        int wParam,
        int lParam );
        // version utilisée pour WM_GETTEXT
        [DllImport("user32.dll")]
        private static extern int SendMessage (
        IntPtr hWnd,
        uint message,
        int wParam,
        StringBuilder lParam );
        [DllImport("user32.dll")]
        private static extern IntPtr FindWindowEx (
        IntPtr hwndParent,
        IntPtr hwndChildAfter,
        string lpszClass,
        string lpszWindow );
        #endregion
        #region API : Constantes
        // Source : WinUser.h
        private const uint WM_GETTEXT = 0x000D;
        private const uint WM_GETTEXTLENGTH = 0x000E;
        #endregion
        private void ActualisationListe()
        {
        // RAZ liste
        listView.Items.Clear();
        IntPtr handleIE = IntPtr.Zero;
        IntPtr handleEdit = IntPtr.Zero;
        StringBuilder str;
        string url="";
        string titre="";
        int longueur_texte;
       
        while ( (handleIE = FindWindowEx(IntPtr.Zero, handleIE, "IEFrame", null))!=IntPtr.Zero)
        {
        // RECUPERATION DU TITRE DE FENETRE
        // Récupération de sa longueur
        longueur_texte = SendMessage(handleIE, WM_GETTEXTLENGTH, 0, 0);
        // Récupération du texte
        str = new StringBuilder(longueur_texte+1);
        SendMessage(handleIE, WM_GETTEXT, str.Capacity, str);
        titre = str.ToString();
        // récupération du handle du controle
        handleEdit = RecupHandleCtrl(handleIE);
        // si notre Combo a été trouvé
        if ( handleEdit != IntPtr.Zero)
        {
       
        longueur_texte = SendMessage(handleEdit, WM_GETTEXTLENGTH, 0, 0);
        // Récupération du texte
        str = new StringBuilder(longueur_texte+1);
        SendMessage(handleEdit, WM_GETTEXT, str.Capacity, str);
        url = str.ToString();
        }
        else
        {
        url = "Non disponible.";
        }
       
        }
        }
       
        private IntPtr RecupHandleCtrl(IntPtr handleIE)
        {
        IntPtr handleTmp = handleIE;
       
        handleTmp = FindWindowEx(handleTmp, IntPtr.Zero, "WorkerW", null);
        if ( handleTmp == IntPtr.Zero) // non trouvé
        return IntPtr.Zero;
        handleTmp = FindWindowEx(handleTmp, IntPtr.Zero, "ReBarWindow32", null);
        if ( handleTmp == IntPtr.Zero) // non trouvé
        return IntPtr.Zero;
        handleTmp = FindWindowEx(handleTmp, IntPtr.Zero, "ComboBoxEx32", null);
        if ( handleTmp == IntPtr.Zero) // non trouvé
        return IntPtr.Zero;
        return handleTmp; // trouvé
        }
        }
    0