2016-06-15 5 views
0

У меня есть проект C#, который открывает URL-адреса в браузере IE с использованием Interop.SHDocVw.Операция отменена Исключение в WIN10 при использовании SHDocVw Navigate2 для navigatng, т.е.

Код использует один экземпляр объекта InternetExplorerClass и перемещается в разные URL-адреса. Эти URL-адреса находятся в зоне Intranet.

код прекрасно работает на WIN7 но WIN10 есть проблема. браузера IE открывает URL правильно в первый раз, но когда я пытаюсь использовать его во второй раз с использованием навигационных или navigate2 методов, которые я получаю следующее сообщение об ошибке:

System.Runtime.InteropServices.COMException (0x80004004) : Операция прервана (исключение из HRESULT: 0x80004004 (E_ABORT)) в SHDocVw.InternetExplorerClass.Navigate (URL String, Object & Flags, объект & TargetFrameName, объект & PostData, объект & Headers)

Я попытался запустить хост-приложение «как администратор», а затем он работал нормально. Также, когда я перемещаюсь вручную в окне IE на адрес в интернет зоны нет проблем, но при навигации вручную к другому intranet url и попытка запустить код во второй раз, ошибка бросается еще раз.

Код:

государственной статической силы IEOpenOnURL (строка URL) { объект о = NULL; bool newBrowser = false;

 //check if window is already opened 
     if(webBrowser==null) 
     { 
      newBrowser = true; 
     } 
     else 
     {    
      try 
      { 
       //Cannot navigate in browser with an open modal dialog 
       if(webBrowser.Busy) 
       { 
        MessageBox.Show("הדפדפן תפוס - סגור את החלונות הקופצים מתוך הדפדפן הפתוח"); 
        return; 
       } 
      } 
      //an error is thrown when the browser was closed by user 
      catch(Exception) 
      { 
       newBrowser = true; 
      } 
     } 

     if(newBrowser) 
     { 
      //create new instance of the browser 
      InternetExplorer explorer = new InternetExplorerClass(); 
      webBrowser = (IWebBrowser2)explorer; 
     } 


     webBrowser.Visible = true; 
     //webBrowser.Navigate(url, ref o, ref o, ref o, ref o); 
     webBrowser.Navigate2(url, ref o, ref o, ref o, ref o); 

     //Set focus 
     SetForegroundWindow((IntPtr)webBrowser.HWND); 
     //If browser is minimized - show it 
     ShowWindow((IntPtr)webBrowser.HWND,9); 
    } 
} 
+0

Привет Йоси, мы повторно испытывают те же проблемы. Вы когда-нибудь находили способ решить эту проблему? – FreddieGericke

ответ

0

Я не собираюсь говорить, что я точно знаю ответ. Но я бы сказал, что вы обычно должны инициализировать Internet Explorer через интерфейс вместо класса. Я столкнулся с ошибками, когда попытался инициализировать класс напрямую.

Попробуйте это:

SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer(); 
    IE.Visible = true;