Как получить URL-адрес веб-страницы из элемента управления ActiveX

Переводы статьи Переводы статьи
Код статьи: 181678
Развернуть все | Свернуть все

В этой статье

Аннотация

В этой статье показано, как элемент управления ActiveX может получать унифицированного указателя ресурса (URL) веб-страницы (документ), на которой он будет размещен.

Это может быть полезно для ограничения использования элемента управления ActiveX для определенного домена или узла или для доступа к файлам, если указан относительный путь.

Дополнительная информация

Во время инициализации встроенных элементов управления ActiveX Internet Explorer (IE), вызывающий IOleObject::SetClientSite() передает указатель сайт клиента. Этот процесс может использоваться для доступа к объектной модели документа для получения URL-адрес для размещения веб-страницы или получить специальное имя для контейнера.

В этой статье показано, как для извлечения текущего URL-адреса из специального имени контейнера. За дополнительной информацией о том, как получить URL-адрес из объектной модели документа обратитесь к следующей статье Microsoft Knowledge Base:
172763ИНФОРМАЦИЯ: Доступ К объектной модели В элемент управления ActiveX
Выполните следующие действия для получения текущего URL-адреса из специального имени контейнера.
  1. Получите указатель интерфейса на веб-узла (IOleClientSite) клиента. Контейнер вызывает IOleObject::SetClientSite() передать указатель на узле клиента. Переопределите этот метод для указателя this в кэш.
  2. Получите специальное имя узла клиента, вызывающий IOleClientSite::GetMoniker().
  3. Вызов IMoniker::GetDisplayName() для получения URL-адрес текущего документа.
В следующем примере кода демонстрируется переопределение метода IOleObject::SetClientSite() в элементе управления ActiveX библиотеки шаблонных классов (ATL) для выполнения действий, описанных выше.

Пример программы

STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
   if (pClientSite != NULL)
   {
      // Obtain URL from container moniker.
      CComPtr<IMoniker> spmk;
      LPOLESTR pszDisplayName;

      if (SUCCEEDED(pClientSite->GetMoniker(
                                    OLEGETMONIKER_TEMPFORUSER,
                                    OLEWHICHMK_CONTAINER,
                                    &spmk)))
      {
         if (SUCCEEDED(spmk->GetDisplayName(
                                 NULL, NULL, &pszDisplayName)))
         {
            USES_CONVERSION;

            CComBSTR bstrURL;
            bstrURL = pszDisplayName;

            ATLTRACE("The current URL is %s\n", OLE2T(bstrURL));
            CoTaskMemFree((LPVOID)pszDisplayName);
         }
      }
   }

   return IOleObject_SetClientSite(pClientSite);
}
				

Ссылки

Дополнительные сведения об интерфейсах IOleObject IoleClientSite и IOleContainer обратитесь к справке Microsoft Visual C++.

(c) Корпорация Майкрософт 1998 года, все права защищены. Сообщения помечать Davis, корпорация Майкрософт

Свойства

Код статьи: 181678 - Последний отзыв: 14 ноября 2010 г. - Revision: 2.0
Ключевые слова: 
kbhowto kbmt KB181678 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:181678
Заявление об отказе относительно содержимого статьи о продуктах, поддержка которых прекращена
Эта статья содержит сведения о продуктах, поддержка которых корпорацией Майкрософт прекращена. Поэтому она предлагается как есть и обновляться не будет.

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com