Поделиться через


Обновление существующего элемента управления ActiveX

Существующие элементы управления ActiveX (ранее элементы управления OLE) можно использовать в Интернете без изменения. Однако может потребоваться изменить элементы управления для улучшения их производительность. При использовании элемента управления на странице, дополнительные соображения. Файл OCX и все вспомогательные файлы должны находиться в механической мишени или быть загружены через Интернет. Это делает объем кода и время загрузки является важным фактором. Загрузки можно упаковать в подписанном CAB-файле. Можно пометить элемент управления как безопасных для скриптов и как безопасность для инициализации.

В этой статье рассматриваются в следующих разделах:

  • Код для загрузки пакетов

  • Пометка безопасность элемента управления для создания и инициализации

  • Вопросы лицензирования

  • Код подписи

  • Управление палитры

  • Уровни безопасности браузера Internet Explorer и расширения функциональности элемента управления

Можно также добавить оптимизации, как описано в разделе Элементы управления ActiveX. Оптимизация. Моникеры можно использовать, чтобы загрузить свойства и большие большие двоичные объекты асинхронно, как описано в разделе Элементы управления ActiveX в Интернете.

Код для загрузки пакетов

Дополнительные сведения об этой теме см. в статье базы знаний «упаковки управления MFC для использования через интернет» (Q167158). Статьи базы знаний можно найти на компакт-диске библиотеки MSDN или на https://support.microsoft.com/support.

Тег CREATE КОДА

Элементы управления ActiveX внедрены в страницах с помощью тега <OBJECT>. Параметр CODEBASE тега <OBJECT> указывает расположение, из которого загрузить элемент управления. CODEBASE может указывать на несколько разных типов файлов успешно.

С помощью тега CREATE КОДА с файлом OCX

CODEBASE="http://example.microsoft.com/mycontrol.ocx#version=4,70,0,1086"

Это решение загрузит только файл OCX элемента управления и требует, чтобы все вспомогательные библиотеки DLL уже установлены на клиентском компьютере. Это будет работать для Internet Explorer и элементов управления ActiveX MFC построенных с Visual C++, поскольку Internet Explorer поставляется с вспомогательных библиотек DLL для элементов управления Visual C++. Если другой интернет-браузер, элементов управления ActiveX, способное используется для просмотра этот элемент управления, это решение не будет работать.

С помощью тега CREATE КОДА с файлом INF

CODEBASE="http://example.microsoft.com/trustme.inf"

INF-файл будет элемент управления установки OCX и его вспомогательных файлов. Этот метод не рекомендуется, поскольку невозможно подписать INF-файл (см. раздел Код подписи для указателей на подписи кода).

С помощью тега CREATE КОДА с файлом совета по изменениям

CODEBASE="http://example.microsoft.com/acontrol.cab#version=1,2,0,0"

CAB-файлы рекомендуется к элементам управления ActiveX пакета, использующих MFC. Упаковка элементов управления ActiveX MFC в CAB-файле позволяет INF-файл, которые должны быть включены в установку элемента управления элемента управления ActiveX и всех зависимых библиотек DLL (например, библиотека DLL MFC). Использование файла совета по изменениям автоматически уменьшается код для быстрой загрузки. При использовании CAB-файл для загрузки компонента, она быстрее для подписи всего CAB-файла, каждый отдельный компонент.

Создание файлов совета по изменениям

Можно загрузить шкаф Development Kit из 310618: Пакет средств разработки программного обеспечения Майкрософт быть статьи базы знаний. В этом комплекте вы найдете необходимые средства для построения CAB-файлы.

CAB-файл, указанное в CODEBASE должен содержать файл OCX для элемента управления ActiveX и INF-файл к элементу управления его установки. Создается CAB-файл, указав имя нужного файла контрольных и INF-файла. Не включайте зависимые библиотеки DLL, которые могут уже существовать в системе в этом CAB-файле. Например, библиотека DLL MFC упаковываются в отдельном CAB-файле и обычно на управление INF-файлу.

Дополнительные сведения о создании файла совета по изменениям см. в разделе Создание файла совета по изменениям.

Файл INF

В следующем примере, spindial.inf, списки вспомогательные файлы и сведения о версии для управления MFC SPINDIAL. Обратите внимание, что расположение для библиотеки DLL MFC веб-сайта корпорации Майкрософт. Mfc42.cab предоставляется и подписывается корпорацией Майкрософт.

Contents of spindial.inf:
[mfc42installer] 
file-win32-x86=http://activex.microsoft.com/controls/vc/mfc42.cab 
[Olepro32.dll] - FileVersion=5,0,4261,0
[Mfc42.dll] - FileVersion=6,0,8168,0
[Msvcrt.dll] - FileVersion=6,0,8168,0

<OBJECT> Тег

В следующем примере показано использование тегов <OBJECT> в пакет образца SPINDIAL элемент управления MFC.

<OBJECT ID="Spindial1" WIDTH=100 HEIGHT=51
  CLASSID="CLSID:06889605-B8D0-101A-91F1-00608CEAD5B3"
  CODEBASE="http://example.microsoft.com/spindial.cab#Version=1,0,0,001">
    <PARAM NAME="_Version" VALUE="65536">
    <PARAM NAME="_ExtentX" VALUE="2646">
    <PARAM NAME="_ExtentY" VALUE="1323">
    <PARAM NAME="_StockProps" VALUE="0">
    <PARAM NAME="NeedlePosition" VALUE="2">
</OBJECT>

В этом случае spindial.cab будет содержать 2 файла, spindial.ocx и spindial.inf. Следующая команда строит CAB-файл.

C:\CabDevKit\cabarc.exe -s 6144 N spindial.cab spindial.ocx spindial.inf 

Параметр –s 6144 резервирует пространство в шкафе для подписи кода.

Тег версии

Обратите внимание, что данные #Version определены с файлом совета по изменения применяются к элементу управления, определяемый параметром CLASSID тега <OBJECT>.

В зависимости от конкретной версии можно загрузить работы элемента управления. Полные спецификации тега OBJECT включая параметр CODEBASE см. в справочнике консорциума W3C.

Пометка безопасность элемента управления для создания и инициализации

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

Элементы управления можно пометить как безопасность для скриптов и безопасность для инициализации через реестр. Измените DllRegisterServer для добавления записи следующего вида для пометки элемента управления как безопасные для создания и сохранения в реестре. Альтернативный метод реализации IObjectSafety.

Можно определить глобальные уникальные идентификаторы (GUID) для элемента управления, чтобы пометить его безопасность для скриптов и для сохранения. Элементы управления, которые могут быть безопасно написанный будут содержать запись реестра следующего вида:

HKEY_CLASSES_ROOT\Component Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}

Элементы управления, которые можно без опаски инициализации с использованием постоянных данных помечаются как безопасность для сохранения с записями реестра аналог:

HKEY_CLASSES_ROOT\Component Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}

Добавьте записи следующего вида (заменяющ идентификатор класса элемента управления вместо {06889605-B8D0-101A-91F1-00608CEAD5B3}) для связывания свои ключи следующим идентификатором класса:

HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4} 
HKEY_CLASSES_ROOT\CLSID\{06889605-B8D0-101A-91F1-00608CEAD5B3}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4} 

Вопросы лицензирования

Если требуется использовать лицензированный элемент управления на странице, необходимо проверить, что лицензионное соглашение позволяет использовать его в Интернете и создает файл пакета лицензии (LPK) для него.

Лицензированное элемент управления ActiveX не загрузит правильно на странице HTML, если компьютер, Internet Explorer не лицензирован для использования элемента управления. Например, если лицензированный элемент управления был создан с использованием Visual C++, страница HTML с помощью элемента управления загружает правильно на компьютере, где элемент управления был создан, но не загружается на другом компьютере, если сведения о лицензиях, не включаются.

Для использования лицензированного элемента управления ActiveX в Internet Explorer необходимо проверить лицензионное соглашение поставщика убедиться, что лицензия для элемента управления позволяет:

  • Распространение

  • Использование элемента управления в Интернете

  • Использовать параметр базы кода

Для использования лицензированного элемента управления на странице HTML nonlicensed на компьютере необходимо создать файл пакета лицензии (LPK). Файл содержит LPK времени выполнения лицензии лицензированных для элементов управления на странице HTML. Этот файл создается с помощью LPK_TOOL.EXE поставляемую с ActiveX SDK. Дополнительные сведения см. на веб-сайте MSDN в https://msdn.microsoft.com.

Создание LPK-файла

  1. Выполните LPK_TOOL.EXE на компьютере, лицензирован для использования элемента управления.

  2. В диалоговом окне Средство разработки пакета лицензии в списке Система доступна выберите Элементы управления лицензированное каждый элемент управления ActiveX, который будет использоваться на странице HTML и нажмите кнопку Добавить.

  3. Щелкните Сохранить & Выход и введите имя для файла LPK. Это создает файл LPK и закрывает приложение.

Внедрение лицензированный элемент управления на странице HTML

  1. Правка страница HTML. На странице HTML вставьте <OBJECT> тегов для объекта диспетчер лицензий перед всеми другими <OBJECT> тегами. Диспетчер лицензий элемент управления ActiveX, задается с помощью Internet Explorer. Его идентификатор класса показан ниже. Задайте для свойства LPKPath объекта диспетчер лицензий на пути и имени файла LPK. Можно разместить только один файл LPK на странице HTML.

    <OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
        <PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
    </OBJECT>
    
  2. Вставка <OBJECT> тега для лицензированного элемента управления после тега диспетчер лицензий.

    Например, страница HTML, которая отображает элемент управления "Поле ввода" замаскированный Майкрософт показана ниже. Идентификатор первого класса для управления диспетчер лицензий, второй класс идентификатора замаскированного элемента управления "Поле ввода". Измените теги для указания на относительного пути файла .lpk созданное ранее, и добавьте тег объекта, включая идентификатор класса для элемента управления.

  3. Добавьте <EMBED> атрибут для файла LPK, при использовании подключаемого модуля NCompass ActiveX.

    Если элемент управления может быть просмотра на других активных включается браузерах, — например, Netscape использование подключаемых модулей NCompass ActiveX — необходимо добавить <EMBED> синтаксис, как показано ниже.

    <OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
        <PARAM NAME="LPKPath" VALUE="maskedit.lpk">
    
        <EMBED SRC = "maskedit.LPK">
    
    </OBJECT>
    <OBJECT CLASSID="clsid:C932BA85-4374-101B-A56C-00AA003668DC" WIDTH=100 HEIGHT=25>
    </OBJECT>
    

Дополнительные сведения о лицензирование элемента управления см. в разделе Элементы управления ActiveX. Лицензировании элементов управления ActiveX.

Код подписи

Подписание кода предназначена для определения источника кода и гарантировать, что код не изменился, поскольку он был подписан. В зависимости от параметров безопасности браузера, пользователи могут быть предупрежены перед выполнением код загружен. Пользователи могут выбирать доверять одним владельцам или компаниям сертификата, в некоторых случаях код, подписанный доверенными этими будет загружен без предупреждения. Код добавляет цифровую подпись, чтобы избежать изменены.

Убедитесь, что конечный код подписывается, чтобы элемент управления можно автоматически загрузить без отображения предупреждений доверия. Дополнительные сведения о подписывание кода, просмотрите документацию на Authenticode в ActiveX SDK и в разделе Подписание файла совета по изменениям.

В зависимости от параметров безопасности доверия и браузера ровных, сертификат может отображаться для определения человека или компанию подписи. Если уровень безопасности не существует, или если доверенным владелец сертификата, подписанного элемента управления сертификат не отображается. В разделе Уровни безопасности браузера Internet Explorer и расширения функциональности элемента управления. дополнительные сведения об использовании параметра безопасности браузера определит загружен ли элемент управления и сертификат.

Код следующим цифров подписи не изменился, поскольку он был подписан. Хэш кода происходит и внедряется в сертификате. Хэш ниже сравнивается с хэш, выполняемом кода после того, как код загружен, но до его выполнения. Компании, например Verisign может использовать частное и открытые ключи, необходимые для подписи кода. ActiveX SDK поставляется с MakeCert, служебной программы для создания протоколы сертификатом.

Управление палитры

Контейнеры определяют палитру и делает ее доступной как внешнее свойство, DISPID_AMBIENT_PALETTE. Контейнер (например, Internet Explorer) выберите палитру, используемую всеми элементами управления ActiveX на странице, чтобы определить собственные палитру. Это предотвращает отображение мелькая и представляет согласованный внешний вид.

Элемент управления может переопределить OnAmbientPropertyChange для обработки уведомления об изменении в палитре.

Элемент управления может переопределить OnGetColorSet для получения набора цветов для рисования палитра. Контейнеры используют возвращенное значение используется для определения, является ли элемент управления палитр- языковые и региональные параметры.

В разделе 96 рекомендаций OCX, элемент управления всегда должен понять его палитру в фоновом режиме.

Более ранние контейнеры, которые не используют окружающее свойство образца отправки WM_QUERYNEWPALETTE и сообщения WM_PALETTECHANGED. Элемент управления может переопределить OnQueryNewPalette и OnPaletteChanged для обработки этих сообщений.

Уровни безопасности браузера Internet Explorer и расширения функциональности элемента управления

Браузер имеет параметры уровня безопасности, настраиваемые пользователем. Поскольку страницы могут содержать активное содержимое, потенциально может повредить систему пользователя, браузеры позволяют пользователю отборным параметров уровня безопасности. В зависимости от способа браузер реализует уровни безопасности, элемент управления будет загружен в целом, или на сертификат или предупреждение, чтобы разрешить пользователю выбирать во время выполнения не может ли загрузить элемент управления. Расширение функциональности элементов управления ActiveX в высокой, среднее значение, а низкими уровнями безопасности Internet Explorer на перечисленных ниже.

Режим высокой безопасности

  • Неподписанные элементы управления не будут загружены.

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

  • Только элементы управления, помеченные как безопасность имеют постоянные данные или быть scriptable.

Среднее значение режима безопасности

  • Неподписанные элементы управления отображались предупреждение перед загрузить.

  • Элементы управления отображаются, подписанные сертификатом, если в ней.

  • Элементы управления не помеченных как безопасность отобразится предупреждение.

Низкий режим безопасности

  • Элементы управления будут загружены без предупреждения.

  • Сценарии и сохранение происходят без предупреждения.

См. также

Ссылки

Элементы управления ActiveX в MFC. Лицензирование элемента управления ActiveX

Основные понятия

Задачи программирования для интернет-решений MFC

Основы программирования для интернет-решений MFC