Я создаю экземпляр 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;
}