Atualizando um controle ActiveX existente
Os controles ActiveX existentes (anteriormente controladores OLE) podem ser usados na Internet sem modificação. No entanto, talvez você queira alterar controles para melhorar o desempenho. Ao usar o controle em uma página da Web, há considerações adicionais. Arquivo de .ocx e todos os arquivos de suporte devem estar no computador de destino ou devem ser baixados por meio da Internet. Isso faz com que o tamanho de código e a hora de download uma consideração importante. Os downloads podem ser empacotados em um arquivo.cab assinado. Você pode marcar o controle como segura para o script, e como segura para inicializar.
Este artigo descreve os seguintes tópicos:
Empacotando código para baixar
Marcando um cofre de controle para o script e para inicializá-lo
Problemas de licenciamento
Assinando o código
Gerenciando a paleta
Níveis de segurança do navegador de Internet Explorer e comportamento de controle
Você também pode adicionar otimizações, conforme descrito em Controles ActiveX: Otimização. Apelidos podem ser usadas para baixar de forma assíncrona propriedades grandes e blobs, conforme descrito em Controles ActiveX na Internet.
Empacotando código para baixar
Para obter mais informações sobre esse assunto, consulte o artigo da Base de Dados de Conhecimento “empacotando controles de MFC para uso pela Internet” (Q167158). Você pode localizar artigos da Base de Dados de Conhecimento em um CD-ROM ou na https://support.microsoft.com/supportBiblioteca MSDN.
A marca de CODEBASE
Os controles ActiveX são inseridos nas páginas da Web usando a marca de <OBJECT> . O parâmetro de CODEBASE da marca de <OBJECT> especifica o local do qual baixar o controle. CODEBASE pode apontar em um número de tipos de arquivo diferentes com êxito.
Usando a marca de CODEBASE com um OCX Arquivo
CODEBASE="http://example.microsoft.com/mycontrol.ocx#version=4,70,0,1086"
Essa solução baixa apenas o arquivo de .ocx de controle, e requer todas as dlls de atendimento mais ser instalada no computador cliente. Isso funcionará para o Internet Explorer e os controles ActiveX MFC compilados com Visual C++, como é fornecido do Internet Explorer com as dlls de suporte para controles do Visual C++. Se outro navegador de Internet que é capaz controle- ActiveX é usado para exibir esse controle, a solução não funcionará.
Usando a marca de CODEBASE com INF Arquivo
CODEBASE="http://example.microsoft.com/trustme.inf"
Um arquivo .inf controlará a instalação de um .ocx e de seus arquivos de suporte. Esse método não é recomendado porque não é possível assinar um arquivo .inf (consulte Assinando o código para os ponteiros em código que assinam).
Usando a marca de CODEBASE com um arquivo CAB
CODEBASE="http://example.microsoft.com/acontrol.cab#version=1,2,0,0"
Os arquivos de gabinete é a maneira recomendada de empacotamento os controles ActiveX que usam o MFC. Empacotar um controle ActiveX de MFC em um arquivo de gabinete permite que um arquivo .inf é incluído para controlar a instalação do controle ActiveX e de todas as dlls dependentes (como as dlls de MFC). Usar um arquivo CAB compacta automaticamente o código de um download mais rápido. Se você estiver usando um arquivo .cab para download componente, é mais rápido assinar o arquivo .cab inteiro de que cada componente individual.
Criando arquivos CAB
Você pode baixar o kit de desenvolvimento de gabinete do artigo da Base de Dados de 310618: Software development kit de gabinete da MicrosoftConhecimento. Neste reprodução você encontrará as ferramentas necessárias para construir arquivos de gabinete.
O arquivo de gabinete apontado por CODEBASE deve conter o arquivo de .ocx para que o controle ActiveX e um arquivo .inf controle sua instalação. Você cria o arquivo de gabinete especificando o nome do arquivo de controle e de um arquivo .inf. Não inclua as dlls dependentes que podem existir no sistema neste arquivo de gabinete. Por exemplo, as dlls de MFC são empacotados em um arquivo separado de gabinete e referenciados por arquivo .inf de controle.
Para obter detalhes sobre como criar um arquivo CAB, consulte Criando um arquivo CAB.
INF Arquivo
O exemplo a seguir, spindial.inf, as listas os arquivos de suporte e informações de versão necessários para o controle de MFC Spindial. Observe que o local para o DLL MFC é um site da Microsoft. O mfc42.cab for fornecido e assinado pela Microsoft.
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
<A marca OBJECT>
O exemplo a seguir ilustra a utilização da marca de <OBJECT> para agrupar o controle de exemplo MFC Spindial.
<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>
Nesse caso, spindial.cab conterá dois arquivos, spindial.ocx e spindial.inf. O comando a seguir criará o arquivo de gabinete:
C:\CabDevKit\cabarc.exe -s 6144 N spindial.cab spindial.ocx spindial.inf
O espaço reservas de parâmetro de –s 6144 na agência para assinatura de código.
A marca de versão
Aqui observe que as informações de #Version especificada com um arquivo CAB se aplica ao controle especificado pelo parâmetro de CLASSID da marca de <OBJECT> .
Dependendo da versão especificada, você pode forçar o download do controle. Para especificações completo da marca de OBJECT que inclui o parâmetro de CODEBASE , consulte a referência da W3C.
Marcando um cofre de controle para o script e para inicializá-lo
Os controles ActiveX usados nas páginas da Web devem ser marcados como segura para o script e segura para inicializar se são de fato seguros. Um controle seguro não executará o disco E/S ou não usará a memória ou os registros de um computador diretamente.
Os controles podem ser marcados como segura para o script e segura para inicializar no Registro. Modifique DllRegisterServer para adicionar entradas semelhante à seguinte para marcar o controle como segura para o script e a persistência no Registro. Um método alternativo é implementar IObjectSafety.
Você definirá GUIDs (identificadores globais exclusivos) para o controle para o marcará seguro para o script e para a persistência. Os controles com segurança que podem ser incluídos no script conterá uma entrada de Registro semelhante à seguinte:
HKEY_CLASSES_ROOT\Component Categories\{7DD95801-9882-11CF-9FA9-00AA006C42C4}
Os controles com segurança que podem ser inicializados de dados persistentes são seguras marcado para a persistência com uma entrada de Registro semelhante a:
HKEY_CLASSES_ROOT\Component Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}
Adicionar entradas semelhante ao seguinte (substituindo a ID da classe do controle em vez disso {06889605-B8D0-101A-91F1-00608CEAD5B3}) para associar as suas chaves com o seguinte ID da classe:
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}
Problemas de licenciamento
Se você quiser usar um controle licenciado em uma página da Web, você deve verificar se o contrato de licença permitir seu uso em Internet e cria um arquivo de pacote de licença LPK () para ele.
Um controle ActiveX licenciado não será carregado corretamente em uma página HTML se o computador que executa o Internet Explorer não é licenciado para usar o controle. Por exemplo, se um controle licenciado foi criado usando o Visual C++, o página HTML que usa o controle será carregado corretamente no computador onde o controle foi compilado, mas não carregará em um computador diferente a menos que licenciamento informações é incluído.
Para usar um controle ActiveX licenciado no Internet Explorer, você deve verificar o contrato de licença do fornecedor verifique se a licença do controle permite:
Redistribuição
Uso de controle na Internet
Uso do parâmetro de Codebase
Para usar um controle licenciado em uma página HTML em um computador nonlicensed, você deve gerar um arquivo de pacote de licença LPK (). O arquivo de LPK contém as licenças de tempo de execução para controles licenciados na página HTML. Esse arquivo é gerado por meio de LPK_TOOL.EXE que vem com ActiveX SDK. Para obter mais informações, consulte o site do MSDN em https://msdn.microsoft.com.
Para criar um arquivo LPK
Executar LPK_TOOL.EXE em um computador que é licenciado para usar o controle.
Na caixa de diálogo de License Package Authoring Tool , na caixa de listagem de DisponívelControles , selecione cada controle ActiveX licenciado que será usado na página HTML e clique em Adicionar.
Clique Save & Exit e digite um nome para o arquivo de LPK. Isso criará o arquivo de LPK e fechará o aplicativo.
Para inserir um controle licenciado em uma página HTML
Editar seu página HTML. Na página HTML, insira <uma marca OBJECT> para o objeto do gerenciador de licença antes de todas as outras <marcas OBJECT> . O gerenciador de licença é um controle ActiveX que é instalado com o Internet Explorer. O ID de classe é mostrado abaixo. Defina a propriedade de LPKPath do objeto do gerenciador de licença ao caminho e o nome do arquivo de LPK. Você pode ter apenas um arquivo de LPK por página HTML.
<OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331"> <PARAM NAME="LPKPath" VALUE="relative URL to .LPK file"> </OBJECT>
Inserir <a marca OBJECT> para seu controle licenciado depois que a marca do gerenciador de licença.
Por exemplo, uma página HTML que exibe o controle de edição mascarado Microsoft é mostrado abaixo. A ID da primeira classe é para o controle do gerenciador de licença, a segunda a classe que é a ID do controle de edição mascarado. Alterar as marcas para apontar para o caminho relativo do arquivo de .lpk que você criou anteriormente, e adicionar uma marca do objeto que inclui a ID da classe para o controle.
Inserir <o atributo INCORPORAR> para o arquivo de LPK, se o plug-in de NCompass ActiveX.
Se o controle puder ser exibido em outros ativos (MARS) habilitados navegadores — por exemplo, Netscape usando o plug-in de NCompass ActiveX — você deve adicionar <a sintaxe INCORPORAR> como mostrado abaixo.
<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>
Para obter mais informações sobre o controle de licença, consulte Controles ActiveX: Licenciamento um controle ActiveX.
Assinando o código
Assinatura de código é criado para identificar a origem do código e, para garantir que o código não foi alterado desde que foi assinado. Dependendo das configurações de segurança do navegador, os usuários podem ser advertidos antes que o código seja baixado. Os usuários podem escolher para confiar em determinadas proprietários ou empresas do certificado, caso o código assinada por esses confiáveis será baixado sem aviso. O código é assinado digitalmente impedir falsificação.
Verifique se seu código final é assinado de modo que seu controle pode ser baixado automaticamente sem exibir mensagens de aviso de confiança. Para obter detalhes sobre como assinar o código, verifique a documentação de Authenticode em ActiveX SDK e Assinando um arquivo CABconsulte.
Dependendo das configurações de nível de confiança e de segurança do navegador, um certificado pode ser exibido para identificar a pessoa ou enterprise de assinatura. Se o nível de segurança é none, ou se o proprietário assinado do certificado de controle será confiável, um certificado não será exibido. Consulte Níveis de segurança do navegador de Internet Explorer e comportamento de controle para obter detalhes sobre como a configuração de segurança do navegador determinará se o controle é baixado e um certificado é exibido.
Assinatura Digital o código das garantias não foi alterado desde que foi assinado. Um hash de código é tirado e inserido no certificado. O hash é posterior comparado com um hash de código realizado depois que o código é baixado mas antes de executar. As empresas como Verisign podem fornecer particular e as chaves públicas necessários para assinar o código. O é fornecido ActiveX SDK com MakeCert, um utilitário para criar certificados de teste.
Gerenciando a paleta
Os contêineres determinam a paleta e fazem-na disponível como uma propriedade de ambiente, DISPID_AMBIENT_PALETTE. Um contêiner (por exemplo, o Internet Explorer) escolher uma paleta usada por todos os controles ActiveX em uma página para determinar sua própria paleta. Isso impede a exibição de cintilar e apresenta uma aparência consistente.
Um controle pode substituir OnAmbientPropertyChange para tratar a notificação das alterações na paleta.
Um controle pode substituir OnGetColorSet para retornar um conjunto de cores para desenhar a paleta. Contêineres usa o valor de retorno para determinar se um controle é paleta- ciente.
Sob diretrizes de OCX 96, um controle deve sempre fazer sua paleta no plano de fundo.
Contêineres mais antigos que não usa a propriedade de ambiente da paleta WM_QUERYNEWPALETTE e vá enviar mensagens de WM_PALETTECHANGED . Um controle pode substituir OnQueryNewPalette e OnPaletteChanged para tratar essas mensagens.
Níveis de segurança do navegador de Internet Explorer e comportamento de controle
Um navegador tem as opções para o nível de segurança, configuráveis pelo usuário. Como as páginas da Web podem incluir conteúdo potencialmente ativa que pode prejudicar o computador de um usuário, os navegadores permitem que o usuário selecione opções para o nível de segurança. Dependendo do modo um navegador implementa níveis de segurança, um controle não pode ser baixado de todo, nem exibirá um certificado ou uma mensagem de aviso para permitir que o usuário escolha em tempo de execução se baixar o controle. O comportamento de controles ActiveX em níveis altos, médio, e baixos de segurança no Internet Explorer é listado em.
Modo de segurança alta
Os controles sem assinatura não serão baixadas.
Os controles assinados exibirão um certificado se não confiável (um usuário pode escolher uma opção sempre confiar na de hoje o código desse proprietário do certificado).
Somente os controles marcados como segura terão dados persistentes e/ou são scriptable.
Modo de segurança médio
Os controles não assinados exibirão um aviso antes de baixar.
Os controles assinados exibirão um certificado se não confiáveis.
Os controles não marcados como segura exibirão um aviso.
Baixo modo de segurança
Os controles são baixados sem aviso.
O script e a persistência ocorrem sem aviso.
Consulte também
Referência
Controles MFC ActiveX: licenciando um controle ActiveX