none
C# SHDocVw 에서 Documentcomplete 안 잡혀요 IE11 RRS feed

  • 질문

  • 

    private void button1_Click(object sender, EventArgs e)
            {
                SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer(); 
                IE.DocumentComplete += IE_DocumentComplete;
                IE.NavigateComplete2 += IE_NavigateComplete2;

                object Empty = new object(); 
                dynamic url = "http://www.google.com/"; 
                IE.Visible = true; 
                IE.Navigate2(ref url);

                while (IE.Busy == true || IE.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE) 
                { 
                    System.Threading.Thread.Sleep(100); 
                } 
                mshtml.HTMLDocument doc = (HTMLDocument)IE.Document; 

                Console.WriteLine("doc.title == " + doc.title); 
                Console.WriteLine("doc.URL == " + doc.url); 
                Console.WriteLine(" -------------------------------\n\n"); 
                Console.ReadLine(); 
            }

            void IE_DocumentComplete(object pDisp, ref object URL)
            {
                Console.WriteLine(URL.ToString());
            }

            void IE_NavigateComplete2(object pDisp, ref object URL)
            {
                Console.WriteLine(URL);
            }

    위와 같이 코딩되어 있고 페이지 이동이나 페이지 내에서 뉴스같은거 클릭시

    이상하게도 IE11 에서만 안되고 나머지 버전에서는

    정상 작동 됩니다.

    원인을 모르겠네요

    OS는 윈도우7 엔터프라이즈 입니다.

                 
    • 편집됨 pall1024 2016년 5월 3일 화요일 오전 11:59
    2016년 5월 3일 화요일 오전 11:58

답변

  • 안녕하세요.

    저의 경우는 잘되는것 같습니다.

    작성한 코드는 아래와 같습니다.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    using SHDocVw;
    using System.Diagnostics;
    using mshtml;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            SHDocVw.InternetExplorer IE;
            public Form1()
            {
                InitializeComponent();
                IE = new SHDocVw.InternetExplorer();
                IE.DocumentComplete += IE_DocumentComplete;
                IE.NavigateComplete2 += IE_NavigateComplete2;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                object Empty = new object();
                dynamic url = "http://www.google.com/";
                IE.Visible = true;
                IE.Navigate2(ref url);
    
                while (IE.Busy == true || IE.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE)
                {
                    System.Threading.Thread.Sleep(100);
                }
                mshtml.HTMLDocument doc = (HTMLDocument)IE.Document;
    
                Debug.WriteLine("doc.title == " + doc.title);
                Debug.WriteLine("doc.URL == " + doc.url);
                Debug.WriteLine(" -------------------------------\n\n");
                
            }
    
            void IE_DocumentComplete(object pDisp, ref object URL)
            {
                Debug.WriteLine(URL.ToString());
            }
    
            void IE_NavigateComplete2(object pDisp, ref object URL)
            {
                Debug.WriteLine(URL);
            }
        }
    }
    

    좋은 하루 되세요.

    2016년 5월 10일 화요일 오전 5:07