Ошибка при использовании interop.Shdocvw - PullRequest
1 голос
/ 23 декабря 2010

Я пытался подключиться к элементу управления веб-браузером, но постоянно возникало исключение, что iwebbrowser2 должен реализовывать iwebbrowser2 как-то так, затем я гуглил и нашел решение этой проблемы, затем выбрал com-объекты, оттуда веб-браузер Microsoft после выбора, что я получил контроль надприменить к форме, и я сделал.

следующий записанный код

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

Невозможно встроить тип взаимодействия 'SHDocVw.tagREADYSTATE', обнаруженный в обеих сборках 'e: \ XMLreader \ lib \ Interop.SHDocVw.dll' и 'e: \ XMLreader \ XMLreader \ obj\ x86 \ Debug \ Interop.SHDocVw.dll.onsider, установив для свойства 'Embed Interop Types' значение false.

Я щелкнул правой кнопкой мыши по этому dll и изменил встраивание interop на false, но безрезультатно.

Я прокомментировал var ie = new IE( frm1.WebBrowser1);и все 68 ошибок исчезли.

1 Ответ

0 голосов
/ 24 декабря 2010

Зачем вам вообще нужна форма?Попробуйте это:

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>
...