环境:
VS2008+Win7 64bit
代码:
public string Execute(WebBrowser browser, HtmlElement btn)
{
bool loadFinished = false;
int counterTimeOut = 500;
string message;
try
{
browser.DocumentCompleted += delegate { loadFinished = true; };
HTMLInputElementClass iElement = (HTMLInputElementClass)btn.DomElement;
iElement.click();
while (!loadFinished && counterTimeOut > 0)
{
Thread.Sleep(100);
Application.DoEvents();
counterTimeOut--;
}
message = string.Format("Button {0} clicked", btn.InnerHtml.ToString());
}
catch (Exception ex)
{
message = ex.ToString();
}
return message;
}

症状:
执行到 HTMLInputElementClass iElement = (HTMLInputElementClass)btn.DomElement; 报错

System.InvalidCastException: 无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“mshtml.HTMLInputElementClass”。进入 CLR 且不支持 IProvideClassInfo 或没有注册任何互操作程序集的 COM 组件都将包装在 __ComObject 类型中。这种类型的实例不能强制转换为任何其他类;不过,只要基础 COM 组件支持对接口 IID 的 QueryInterface 调用,就能将这些实例强制转换为接口。

解决:
1、直接改为 HTMLInputElement iElement = (HTMLInputElement)btn.DomElement;

2、绝杀方法
将目标平台由“Any CPU” 改为X86
HTMLInputElement iElement = (HTMLInputElement)btn.DomElement;
HTMLInputElementClass iElement = (HTMLInputElementClass)btn.DomElement;
两个方法都不报错

无法将类型为“System.__ComObject”的 COM 对象强制转换为类类型“mshtml.HTMLInputElementClass...相关推荐

  1. 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型,原因为没有注册类...

    错误描述 e = {"无法将类型为"System.__ComObject"的 COM 对象强制转换为接口类型"OpcRcw.Da.IOPCServer" ...

  2. 无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.VisualStudio.OLE.Interop.IServiceProvider”。

    无法将类型为"System.__ComObject"的 COM 对象强制转换为接口类型"Microsoft.VisualStudio.OLE.Interop.IServi ...

  3. 解决C#调用Excel接口时报错,提示:Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Offi

    解决C#调用Excel接口时报错,提示:Microsoft.Office.Interop.Excel.ApplicationClass"的 COM 对象强制转换为接口类型"Micr ...

  4. 无法将为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型

    文章目录 1.错误原因 2. 解决方式 2.1 office多版本 2.1.1 删除多余版本 2.1.2 修复当前版本 2.1.3 其他操作(可选1) 2.1.4 其他操作(可选2) 2.2 wps卸 ...

  5. 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型Microsoft.Office.Interop.Word

    .net中使用Microsoft.Office.Interop.Word时抛异常: 无法将为"Microsoft.Office.Interop.Word.ApplicationClass&q ...

  6. 无法将类型为“System.__ComObject”的对象强制转换为类型“ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFactoryClass

    错误:无法将类型为"System.__ComObject"的对象强制转换为类型"ESRI.ArcGIS.DataSourcesGDB.FileGDBWorkspaceFa ...

  7. 解决无法将类型为“System.Web.UI.WebControls.HiddenField”的对象强制转换为类型的错误...

    解决无法将类型为"System.Web.UI.WebControls.HiddenField"的对象强制转换为类型的错误 2008-01-04 16:14 本文章将解决: 1.解释 ...

  8. 无法将类型为“Autodesk.Revit.DB.ElementId”的对象强制转换为类型“System.IConvertible

    原版: ElementId pileID = pileList[0].Id;int intpileID = Convert.ToInt32(pileID);FamilySymbol familysym ...

  9. 运算符重载(4.基本数据类型转换为类类型)【非重点】

    知识点1.基本数据类型转换为类类型的两种方式 1.通过构造函数进行转换 例题:如下列代码通过用构造函数的方式,将一个double的数据变成一个crmb类 #include <iostream&g ...

最新文章

  1. git连接jenkins_基于 Jenkins 和 Kubernetes 的持续集成测试实践了解一下!
  2. 通达信波段王指标公式主图_通达信波段线主图指标公式
  3. ubuntu18.04安装windows版本微信
  4. 《大数据原理:复杂信息的准备、共享和分析》一一2.5 在标识符中嵌入信息:不推荐...
  5. 一个困扰数学家的古老谜题:意大利面能否被折成两段?
  6. SAP自学指南:案例公司的管理难题
  7. 谷歌安装器 android8.0,Android 8.0版本安装谷歌四件套
  8. quartus ii
  9. ios 旋转加载gif_在iOS中加载GIF(Loading GIFs in iOS)
  10. 新视角 | 新形势下工厂设备管理的5大误区
  11. TMS320F280049C 学习笔记15 DAC
  12. 易地推招生拓客分享:如何让社群招生成为培训机构招生利器?
  13. 【kubernetes/k8s源码分析】 kubelet cgroup 资源预留源码分析
  14. 5G提速 高通助推标准走向现实
  15. 虚拟跑步刷步软件下载_小米穿戴2.0最新版下载-小米穿戴2.0新虚拟形象版v2.0.0 安卓版...
  16. 为InfiniBand而哭泣
  17. BPM助企业提升执行力
  18. 聊天机器人:问答系统类型介绍
  19. Web3中文|NFT如何促进教育的发展?
  20. PLC控制气缸,如何使用二位五通和三位五通控制电磁阀控制

热门文章

  1. Qt Creator在多个平台上运行
  2. Qt Creator开发基于小部件的应用程序
  3. C语言位、字节、半字、字的概念和内存位宽
  4. c++设计模式编程基础
  5. matlab访问数组的元素,使用分类数组访问数据
  6. PHP probuf详细步骤_初识protobuf和php的相关用法
  7. linux 如何让.开头的文件不隐藏_如何使用 BusyBox 制作Linux最小文件系统
  8. php查找时间,PHP 查找并算出世界各地时间
  9. 合并k个有序链表 python_[LeetCode] 23. Merge k Sorted Lists 合并k个有序链表
  10. 1.16.Flink Window和Time详解、TimeWindow的应用、Window聚合分类之全量聚合、全量聚合状态变化过程-求最大值、Time介绍、EventTime和Watermarks等