1

我试图连接到网络浏览器控件,但它不断抛出异常,即 iwebbrowser2 应该实现 iwebbrowser2 类似的东西,然后我用谷歌搜索并找到了解决方案,选择 com 对象,然后从那里选择微软网络浏览器后,我得到了控制以应用于表单我做到了。

接下来写代码

var t = new Thread(() =>
{
    Form1 frm1 = new Form1();
    
    //new FormDialogWatcher(frm1.Handle);
    Settings.AutoStartDialogWatcher = false;
    var ie = new IE( frm1.WebBrowser1);
    
    ie.GoTo("http://www.google.com");
});
t.SetApartmentState(ApartmentState.STA);
t.Start();

正如堆栈溢出中的其他线程建议。添加参考 introp.SHdocve 但是当我构建 68 时发生错误:

错误 64

无法在程序集“e:\XMLreader\lib\Interop.SHDocVw.dll”和“e:\XMLreader\XMLreader\obj\x86\Debug\Interop.SHDocVw.dll”中嵌入互操作类型“SHDocVw.tagREADYSTATE”。onside 将“嵌入互操作类型”属性设置为 false。

我右键单击此 dll 并将嵌入互操作更改为 false 但没有效果。

我注释掉了var ie = new IE( frm1.WebBrowser1);,所有 68 个错误都消失了。

4

1 回答 1

0

你为什么要表格。试试这个:

var ie = new IE();

也可以在配置中为整个应用程序设置 ApartmentState。

<configuration>
  <configSections>
    <sectionGroup name="NUnit">
      <section name="TestRunner" type="System.Configuration.NameValueSectionHandler"/>
    </sectionGroup>
  </configSections>

  <NUnit>
    <TestRunner>
      <!-- Valid values are STA,MTA. Others ignored. -->
      <add key="ApartmentState" value="STA" />
    </TestRunner>
  </NUnit>


</configuration>
于 2010-12-24T12:59:45.787 回答