Partilhar via


Atualizando um controle existente do ActiveX

Os controles ActiveX existentes (anteriormente controladores OLE) podem ser usados sem alteração na Internet.No entanto, convém alterar controles para melhorar o desempenho.Ao usar o controle em uma página da Web, há algumas considerações adicionais.Arquivo de .ocx e todos os arquivos de suporte devem estar no computador de destino ou ser baixados através da Internet.Isso torna o tamanho de código e hora de download uma consideração importante.Downloads podem ser fornecido em um arquivo.cab assinado.Você pode marcar o controle como o cofre de script, e como o cofre para inicializar.

Este artigo descreve os seguintes tópicos:

  • Empacotando o código para baixar

  • Marcar um cofre do controle para o script e inicializá-la

  • Licenciando problemas

  • 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, como descrito em Controles ActiveX: Otimização.As alcunhas podem ser usadas para baixar de forma assíncrona propriedades e grandes gotas, como descrito em Controles ActiveX na Internet.

Empacotando o código para baixar

Para obter mais informações sobre este assunto, consulte o artigo de Base de Dados de Conhecimento “compactação controles MFC para uso pela Internet (Q167158”).Você pode localizar artigos de Base de Dados de Conhecimento da Biblioteca MSDN em um CD-ROM https://support.microsoft.com/supportou.

941zhks9.collapse_all(pt-br,VS.110).gifA marca de CODEBASE

Os controles ActiveX são inseridos em páginas da Web usando a marca de <OBJECT> .O parâmetro de CODEBASE de marca de <OBJECT> especifica o local de onde para baixar o controle.CODEBASE pode apontar em um número de diferentes tipos de arquivo com êxito.

941zhks9.collapse_all(pt-br,VS.110).gifUsando a marca de CODEBASE com um Arquivo OCX

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

Esta solução descarrega somente o arquivo de .ocx de controle, e requer quaisquer dlls de suporte ser já instalado no cliente.Isso funcionará para o Internet Explorer e controles ActiveX MFC criados com Visual C++, porque vem da Internet Explorer com as dlls de suporte para controles Visual C++.Se outro navegador de Internet que é capaz de controle ActiveX é usado para exibir esse controle, esta solução não funcionará.

941zhks9.collapse_all(pt-br,VS.110).gifUsando a marca de CODEBASE com INF Arquivo

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

Um arquivo .inf irá controlar a instalação de um .ocx e seus arquivos de suporte.Este método não é recomendado porque não é possível assinar um arquivo .inf (consulte Assinando o código para ponteiros no código que a assinatura).

941zhks9.collapse_all(pt-br,VS.110).gifUsando a marca de CODEBASE com um arquivos CAB

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

Arquivos de gabinete é a maneira recomendada para empacotar os controles ActiveX que usam o MFC.Empacotar um controle ActiveX MFC em um arquivo de gabinete permite que um arquivo .inf é incluído para controlar a instalação do controle ActiveX e de quaisquer dlls dependentes (como as dlls MFC).Usar um arquivos CAB compacta automaticamente o código para 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.

941zhks9.collapse_all(pt-br,VS.110).gifCriando arquivos CAB

Você pode baixar o kit de desenvolvimento de gabinete do artigo de Base de Dados de 310618: O software development kit de gabinete da MicrosoftConhecimento.Nesse kit 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 a instalação.Você cria o arquivo de gabinete especificando o nome do arquivo do controle e de um arquivo .inf.Não inclua as dlls dependentes que podem já existir no sistema no arquivo de gabinete.Por exemplo, as dlls MFC são compactados em um arquivo separado de gabinete e referenciados pelo arquivo .inf de controle.

Para obter detalhes sobre como criar um arquivo CAB, consulte Criando um arquivo CAB.

941zhks9.collapse_all(pt-br,VS.110).gifOs INF Arquivo

O exemplo a seguir, spindial.inf, listas os arquivos de suporte e informações de versão necessário para o controle MFC Spindial.Observe que o local para as dlls MFC é um site da Microsoft.O mfc42.cab é 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

941zhks9.collapse_all(pt-br,VS.110).gifA marca de <OBJECT>

O exemplo a seguir ilustra usando a marca de <OBJECT> para empacotar o exemplo de controle 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 irá conter dois arquivos, spindial.ocx e spindial.inf.O comando a seguir irá criar o arquivo de gabinete:

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

O espaço de reservas de parâmetro de –s 6144 gabinete para assinar de código.

941zhks9.collapse_all(pt-br,VS.110).gifA marca de versão

Aqui observe que as informações de #Versionespecificada com um arquivos CAB se aplica ao controle especificado pelo parâmetro de CLASSID de marca de <OBJECT> .

Dependendo da versão especificada, você pode forçar o download do controle.Para especificações completas de marca de OBJECT que inclui o parâmetro de CODEBASE , consulte a referência W3C.

Marcar um cofre do controle para o script e inicializá-la

Os controles ActiveX usados em páginas da Web devem ser marcados como o cofre para o script e o cofre para inicializar se são na verdade seguros.Um controle que não executará o disco E/S ou não irá acessar a memória ou registros diretamente de um computador.

Os controles podem ser marcados como o cofre para o script e o cofre para inicializar através do Registro.Modifique DllRegisterServer para adicionar as entradas semelhantes ao seguinte para marcar o controle como o cofre para o script e persistência no Registro.Um método alternativo é implementar IObjectSafety.

Você irá definir GUIDs (identificadores exclusivos) para o controle para marcá-lo seguro para o script e para persistência.Controles que podem ser com segurança com base em um script conterão uma entrada de Registro semelhante ao seguinte:

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

Os controles com segurança que podem ser inicializados de dados persistentes apresentam segurança marcado para persistência com uma entrada de Registro semelhante a:

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

Adicione as entradas semelhantes a seguir (substituindo a identificação de classe do controle no lugar de {06889605-B8D0-101A-91F1-00608CEAD5B3}) para associar suas chaves com o seguinte identificação de 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} 

Licenciando problemas

Se você desejar usar um controle licenciado em uma página da Web, você deve verificar que o contrato de licença permite o uso de na Internet e cria um arquivo de pacote de licença LPK () para ele.

Um controle ActiveX licenciado não carregará 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 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 licenciando 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 para o controle permite:

  • Redistribuição

  • Uso do controle na Internet

  • Uso de parâmetro de A

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 uma de tempo de execução para controles licenciadas no página HTML.Este arquivo é gerado através 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

  1. Executar LPK_TOOL.EXE em um computador que está licenciado para usar o controle.

  2. Na caixa de diálogo de License Package Authoring Tool , na caixa de listagem de DisponívelControles , selecione cada controle ActiveX licenciado que será usada no página HTML e clique em Adicionar.

  3. Save & Exit clique em e digite um nome para o arquivo de LPK.Isso criará o arquivo de LPK e fechado o aplicativo.

Para inserir um controle licenciado em uma página HTML

  1. Editar o página HTML.No página HTML, insira uma marca de <OBJECT> para o objeto do gerenciador de licença antes de quaisquer outras marcas de <OBJECT> .O gerenciador de licença é um controle ActiveX que é instalado com o Internet Explorer.Sua identificação de classe é mostrado abaixo.Defina a propriedade de LPKPath do objeto do gerenciador de licença para o caminho e o nome do arquivo de LPK.Você pode ter apenas um arquivo de LPK pelo página HTML.

    <OBJECT CLASSID = "clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
        <PARAM NAME="LPKPath" VALUE="relative URL to .LPK file">
    </OBJECT>
    
  2. Inserir a marca de <OBJECT> para o controle licenciado após 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 identificação de primeira classe é para o controle do gerenciador de licença, a segunda classe que é a identificação para o controle de edição mascarado.Altere as marcas para apontar para o caminho relativo do arquivo de .lpk que você criou anteriormente, e adicionar uma tag de objeto que inclui a identificação de classe para o controle.

  3. Insira o atributo de <EMBED> para o arquivo de LPK, usando o plug-in NCompass ActiveX.

    Se o controle pode ser exibido em outros navegadores ativados ativos — por exemplo, o Netscape usando plug-in NCompass ActiveX — você deve adicionar a sintaxe de <EMBED> 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: Licenciando um controle ActiveX.

Assinando o código

Assinatura de código é criado para identificar a origem de código, e para garantir que o código não foi alterada desde que foi assinado.Dependendo das configurações de segurança do navegador, os usuários podem ser advertidos antes que o código é baixado.Os usuários podem optar por confiar em determinadas proprietários ou empresas de certificado nesse caso, o código assinado pelos confiáveis será baixado sem aviso.O código é assinado digitalmente evitar a violação.

Certifique-se de que seu código final é assinado de modo que o 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 em Authenticode ActiveX no SDK e consulte Assinando um arquivo CAB.

Dependendo das configurações de nível de confiança e segurança do navegador, um certificado pode ser exibido para identificar a pessoa ou o enterprise assinatura.Se o nível de segurança não é nenhum, ou se o proprietário assinado de certificado do controle é 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 que o código das garantias não foi alterada desde que foi assinado.Um hash de código é executada e inserido no certificado.Este hash é mais tarde em comparação com um hash de código extraído 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 vem com MakeCert ActiveX SDK, um utilitário para criar certificados de teste.

Gerenciando a paleta

Contêiners determinam a paleta e fazem-na disponível como uma propriedade de ambiente, DISPID_AMBIENT_PALETTE.Um recipiente (por exemplo, o Internet Explorer) escolher uma paleta que é usada por todos os controles ActiveX em uma página para determinar sua própria paleta.Isso evita a exibição de cintilar e apresenta uma aparência consistente.

Um controle pode substituir OnAmbientPropertyChange para trate a notificação de alterações na paleta.

Um controle pode substituir OnGetColorSet para retornar um conjunto de cor para desenhar a paleta.Contêiners usam o valor de retorno para determinar se um controle está paleta- ciente.

Em diretrizes de OCX 96, um controle sempre deve fazer sua paleta no plano de fundo.

Um recipiente mais antigos que não usa a propriedade de ambiente de paleta enviarão WM_QUERYNEWPALETTE e 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 páginas da Web podem conter conteúdo ativa que potencialmente 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.A maneira segundo um navegador implementa níveis de segurança, um controle não pode ser baixado de todo, ou 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édios, e baixo de segurança no Internet Explorer é listado abaixo.

941zhks9.collapse_all(pt-br,VS.110).gifModo alto de segurança

  • Os controles sem sinal não serão baixados.

  • Os controles com sinal exibirão um certificado se não confiável (um usuário pode escolher uma opção sempre que a partir de agora o código do proprietário de certificado).

  • Somente os controles marcados como o cofre terão dados persistentes e/ou são scriptable.

941zhks9.collapse_all(pt-br,VS.110).gifPara médio de segurança

  • Os controles sem sinal exibirão um aviso antes de fazer o download.

  • Os controles com sinal exibirão um certificado se não confiáveis.

  • Os controles não marcados como o cofre exibirão um aviso.

941zhks9.collapse_all(pt-br,VS.110).gifPara baixo de segurança

  • Os controles são baixados sem aviso.

  • O script e persistência ocorrem sem aviso.

Consulte também

Referência

Controles de ActiveX MFC: Licenciamento um controle ActiveX

Conceitos

Tarefas de programação de Internet do MFC

Noções básicas de programação de Internet do MFC