首页 新闻 赞助 找找看

mshtml.HTMLDocumentClass转换为IHTMLDocument2问题

0
悬赏园豆:30 [已解决问题] 解决于 2013-01-23 18:24

代码如下:

HtmlDocument html = webbrowser1.Document;

FindHelper.FindControlByAttValue("a", "class", "W_btn_d", "登录", html.All)

public static HtmlElement FindControlByAttValue(string Tag, string AttName, string AttValue, string innerText, HtmlElementCollection listOfHtmlControls)
{
try
{
int aa = listOfHtmlControls.Count;
foreach (HtmlElement element in listOfHtmlControls)
{
string str = element.OuterHtml;
if (!string.IsNullOrEmpty(element.OuterHtml))
{
string tagName = element.TagName;
if (element.TagName.ToLower() == Tag.ToLower())
{
string OuterHtml = element.OuterHtml;
if (OuterHtml == null) continue;
OuterHtml = OuterHtml.Substring(0, OuterHtml.IndexOf(">"));
OuterHtml = OuterHtml.ToLower();

if (OuterHtml.Contains(AttName.ToLower()) && OuterHtml.Contains(AttValue.ToLower()))
{
string e = element.InnerText;
if (e == null) e = "";
if (e.Trim().ToLower().Contains(innerText.ToLower()))
{
return element;
}
}
}
}
}
}

 程序刚开始没问题,运行一段时间会报这个错,格式转换的不对?要怎么做?

报错:

Unable to cast COM object of type 'mshtml.HTMLDocumentClass' to interface type 'IHTMLDocument2'.  

(Exception from HRESULT: 0x80028019 (TYPE_E_UNSUPFORMAT)).
at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, Boolean& pfNeedsRelease)
at System.Windows.Forms.UnsafeNativeMethods.IHTMLDocument2.GetAll()
at System.Windows.Forms.HtmlDocument.get_All()

陀螺-的主页 陀螺- | 初学一级 | 园豆:74
提问于:2013-01-08 17:04
< >
分享
最佳答案
0

mshtml.HTMLDocumentClass不就是继承IHTMLDocument2接口的吗?不会你自己也定义了一个IHTMLDocument2接口吧?还是引入了不同版本的 Microsoft HTML Object Library COM程序集啊?可以开启vs的异常,看看具体是那段代码抛的异常。

收获园豆:30
滴答的雨 | 老鸟四级 |园豆:3681 | 2013-01-08 19:13

怀疑是不同版本的 Microsoft HTML Object Library COM程序集问题,因为程序在个别服务器上会报错,别的服务器没有问题。

请问下如何查看Microsoft HTML Object Library COM程序集版本?

陀螺- | 园豆:74 (初学一级) | 2013-01-09 10:36

@t-h: 在vs的引用中就可以看

 

或者你使用Reflector来反编译看

滴答的雨 | 园豆:3681 (老鸟四级) | 2013-01-09 10:51

@滴答的雨: 最后更新了下服务器上ie版本为最新版

陀螺- | 园豆:74 (初学一级) | 2013-01-23 18:24
其他回答(1)
0
用 IHTMLDocument2 html = webBrowser1.Document.DomDocument as IHTMLDocument2
试试
gunsmoke | 园豆:3592 (老鸟四级) | 2013-01-11 06:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册