2014年12月25日
“对 COM 组件的调用返回了错误 HRESULT E_FAIL”解决方案
在实现《C#控制IE浏览器自动执行百度搜索》时,遇到第二个问题是:未处理的“System.Runtime.InteropServices.COMException”类型的异常出现在 autoSearchBaidu.exe 中。其他信息: 对 COM 组件的调用返回了错误 HRESULT E_FAIL。
网络上千篇一律的解决方案是说要开启dtc服务,然后去组件服务里把本地DTC设置成开启网络DTC服务,并允许入站和允许出站,并且设置成不要求进行验证,如下图所示:
这个方案在我的程序运行环境下不奏效。
后来我在stackoverflow中找到了答案,相关链接如下:http://stackoverflow.com/questions/8898341/error-when-trying-to-access-dom-using-shdocvw-internetexplorer-document。
按照该帖子的说法,我在访问HTMLDocument之前,添加了如下代码,然后警报解除,如果你遇到了和我一样的问题,也可一试。
1 2 3 4 |
while(ie.Busy || ie.ReadyState != tagREADYSTATE.READYSTATE_COMPLETE) { Thread.Sleep(500); } |