none
Webbrowser - каким образом отследить ошибки http RRS feed

  • Вопрос

  • Доброго времени суток!

    Суть проблемы в следующем:

    Есть приложение которое с некоторым периодом перходит по веб-страницам в Интернет. Иногда происходит сбой подключения сети или привышает период ожидания от сервера и прочие ошибки http с кодами групп 4xx и 5xx. Так вот, каким образом с помощью стандартных средств класса Webbrowser можно отследить эти ошибки. Пробывал через изменение URL в методах Navigating и Navigated но почему то URL не меняется на вид res://ieframe.dll.

    И еще несколько попутных вопросов касаемо этого же компонента. Существует ли событие которое наступает когда выскакивает модального диалоговое окно вызываемое java скриптом alerrt(); ? Каким образом это можно перехватить и закрыть, сейчас я нашел только одно решение не очень то хорошее но рабочее.

     

    public const int WM_SYSCOMMAND = 0x0112;

     

    public const int SC_CLOSE = 0xF060;

    [

    DllImport("user32.dll")]

     

    public static extern int FindWindow(

     

    string lpClassName,

     

    string lpWindowName

    );

    [

    DllImport("user32.dll")]

     

    public static extern int SendMessage(

     

    int hWnd,

     

    uint Msg,

     

    int wParam,

     

    int lParam

    );

    далее в таймере с временем в 50 милисекунд

    int

     

    iHandle = FindWindow(null, "Сообщение с веб-страницы");

     

    if (iHandle != 0)

    {

    SendMessage(iHandle, WM_SYSCOMMAND, SC_CLOSE, 0);

    }

     

    • Перемещено Tagore Bandlamudi 1 октября 2010 г. 22:07 MSDN Forums consolidation (От:Visual C#)

Ответы

  • From here and here

    public Form13()

    {

          InitializeComponent();

     

         this .webBrowser1.Navigate("http://blablablabla.bla" );

     

          SHDocVw.WebBrowser axBrowser = (SHDocVw.WebBrowser )this .webBrowser1.ActiveXInstance;

          axBrowser.NavigateError +=

               new SHDocVw.DWebBrowserEvents2_NavigateErrorEventHandler (axBrowser_NavigateError);

    }

     

    void axBrowser_NavigateError(object pDisp, ref object URL,

           ref object Frame, ref object StatusCode, ref bool Cancel)

    {

          if (StatusCode.ToString() == "404" )

         {

              MessageBox .Show("Page no found" );

          }
    }

    • Помечено в качестве ответа I.Vorontsov 11 мая 2010 г. 6:21