C # Как получить текущий URL из IE? - PullRequest
7 голосов
/ 13 ноября 2010

Я хочу получить текущий URL из IE (.NET 4). Для этого я добавил ссылку на Microsoft Interner Controls и добавил код (от http://omegacoder.com/?p=63)

foreach (InternetExplorer ie in new ShellWindowsClass())
{
   textBox1.Text = ie.LocationURL.ToString();
}

но я получаю 2 ошибки:

1] The type 'SHDocVw.ShellWindowsClass' has no constructors defined

2] Interop type 'SHDocVw.ShellWindowsClass' cannot be embedded.
   Use the applicable interface instead.

Как это решить?

1 Ответ

17 голосов
/ 13 ноября 2010

Вторая ошибка вызывает первую. Откройте узел References проекта, выберите SHDocVw. В окне «Свойства» измените «Вставить типы взаимодействия» на false. Вам нужно будет развернуть сборку Interop.SHDocVw.dll, в которой вы найдете выходной каталог сборки вместе с вашей программой.

РЕДАКТИРОВАТЬ: после исследования этой ошибки, я нашел лучший способ сделать это. Проблема в том, что могут быть встроены только типы интерфейса COM , а не classes . Поэтому избегайте использования в своем коде синтетических XxxxClass оберток. Вместо этого сделайте так:

        foreach (InternetExplorer ie in new ShellWindows()) {
            //...
        }

Что выглядит странно, вы не можете обычно использовать оператор new для типа интерфейса на языке C #. Но на самом деле поддерживается для интерфейсов COM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...