IE экземпляр, DocumentCompleted выполняется слишком скоро - PullRequest
2 голосов
/ 19 августа 2011

Я создаю экземпляр IE вне моей программы, который программа находит и правильно подключает. Я установил свой обработчик событий и приказал программе перейти на экран входа в систему. Дескриптор DocumentCompleted должен срабатывать, когда веб-страница полностью загружена, но моя, похоже, срабатывает до появления новой страницы. Дескриптор срабатывает только один раз (что означает, что есть только один кадр?).

Этот код выполняется нормально, если я изменяю его так, чтобы он работал прямо со страницы входа в систему .. Я что-то не так делаю? Спасибо за любую помощь:)

        Process.Start(@"IESpecial.exe");

        SHDocVw.ShellWindows allBrowsers = new SHDocVw.ShellWindows();
        while (true)
        {
            foreach (SHDocVw.WebBrowser ie in allBrowsers)
            {
                if (ie.LocationURL == "http://website/home.asp")
                {
                    loggingIn = true;
                    webBrowser = ie;
                    webBrowser.DocumentComplete += new SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(webBrowser1_DocumentCompleted);
                    webBrowser.Navigate("http://website/logon.asp");
                    return;
                }
            }
            Thread.Sleep(10);
        }
    }

        private void webBrowser1_DocumentCompleted(object pDisp, ref object URL)
    {
        //we are attempting to log in
        if (loggingIn)
        {
            mshtml.HTMLDocumentClass doc = (mshtml.HTMLDocumentClass)webBrowser.Document;
            mshtml.HTMLWindow2 window = (mshtml.HTMLWindow2)doc.IHTMLDocument2_parentWindow;

            doc.getElementById("Username").setAttribute("value", "MLAPAGLIA");
            doc.getElementById("Password").setAttribute("value", "PASSWORD");
            window.execScript("SubmitAction()", "javascript");
            loggingIn = false;
            return;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...