Доступ к имени кадра приводит к исключению «Отказано в доступе» - PullRequest
3 голосов
/ 21 апреля 2011

Я делаю панель инструментов на C # для IE, и мне нужно получить доступ к определенному фрейму на веб-сайте.На моих начальных тестах я просто пытаюсь циклически перемещаться по фреймам и у меня появляется всплывающее окно MessageBox с названием фрейма.Но я сталкиваюсь с исключением, когда пытаюсь это сделать, говоря: «Доступ запрещен».Полный текст исключения:

Доступ запрещен.(Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))

Вот код:

IHTMLSelectionObject currentSelection = myHTMLDocument.selection;

IHTMLFramesCollection2 frames = (IHTMLFramesCollection2)myHTMLDocument.frames;

for (int i = 0; i < frames.length; i++)
{
    object refIndex = i;

    IHTMLWindow2 currentFrame = (IHTMLWindow2)frames.item(ref refIndex);

    if (currentFrame != null)
    {
        MessageBox.Show(currentFrame.name);
    }
    else
        MessageBox.Show("Null");

}

Из моих поисков в Интернете я обнаружил, что это, на самом деле, не ошибка.Ожидается, что он будет вести себя таким образом.Мой вопрос: как правильно делать то, что я пытаюсь сделать?

Заранее спасибо!

1 Ответ

0 голосов
/ 18 октября 2015

Возможно, вы получаете это сообщение, потому что пытаетесь получить доступ к кадру из другого домена. та же политика происхождения не позволяет вам сделать это.Чтобы заставить его работать, используйте IServiceProvider.

IServiceProvider isp = (IServiceProvider) currentFrame;

, затем запросите, используя QueryService, чтобы получить объект IWebBrowser2.

Убедитесь, что вы используете System.Runtime.InteropServices

...