我目前正在编写 ac# 窗体应用程序,它启动 Internet Explorer 的实例,导航到某个 Intranet 页面,填写表格并提交该表格。
这是一些代码:
int state = 0;
SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
ie.DocumentComplete += ie_DocumentComplete;
ie.Visible = false;
string url = "http://xch:8080/intro/open/index.jsp";
ASCIIEncoding Encode = new ASCIIEncoding();
byte[] post = Encode.GetBytes("check=Agd3458HD3jhf");
string postHeaders = "Content-Type: application/x-www-form-urlencoded";
state = 1;
ie.Navigate2(url, null, null, post, postHeaders);
private void ie_DocumentComplete(object pDisp, ref object URL)
{
if (state == 1)
{
//call a function that fills out the form, submits it and sets "state" to 2
}
else if (state == 2)
{
ie.Visible = true;
}
}
基本上就是这样。但是 url 中的“xch”似乎出现了一些重大问题。当我使用 IP 地址时,一切都很好。使用“xch”,事情变得一团糟:
- 浏览器窗口已显示在“ie.Navigate2(...)”上
DocumentComplete
永远无法到达事件处理程序- 当我尝试访问其中的
HTMLDocument
或某些Elements
内容时,会引发异常
我的客户坚持在地址栏中使用“xch”而不是 IP 地址,我的第一个想法是,这没关系,因为浏览器可以通过任何方式访问该页面。但显然我错了:/我还应该提到,当我使用“xch”时,问题并不总是发生。到目前为止,它只发生在具有 IE9 的 Windows 7 PC 和没有管理员权限的用户上。所以,我的问题是,如果其他人有类似的问题,我能做些什么来缩小问题的范围?