Partilhar via


Registo

Quando um usuário deseja inserir um item OLE em um aplicativo, OLE apresenta uma lista de tipos de objeto para escolher. OLE obtém essa lista do banco de dados de registro do sistema, que contém informações fornecidas por todos os aplicativos de servidor. Quando um servidor se registra, as entradas que ele coloca no banco de dados de registro do sistema (o Registro) descrevem cada tipo de objeto que ele fornece, extensões de arquivo e o caminho para si mesmo, entre outras informações.

A estrutura e as bibliotecas de vínculo dinâmico (DLL) do sistema OLE usam esse registro para determinar quais tipos de itens OLE estão disponíveis no sistema. As DLLs do sistema OLE também usam esse registro para determinar como iniciar um aplicativo de servidor quando um objeto vinculado ou incorporado é ativado.

Este artigo descreve o que cada aplicativo de servidor precisa fazer quando é instalado e cada vez que é executado.

Para obter informações detalhadas sobre o banco de dados de registro do sistema e o formato dos arquivos .reg usados para atualizá-lo, consulte a Referência do programador OLE.

Instalação do servidor

Quando você instala seu aplicativo de servidor pela primeira vez, ele deve registrar todos os tipos de itens OLE que ele suporta. Você também pode fazer com que o servidor atualize o banco de dados de registro do sistema sempre que ele for executado como um aplicativo autônomo. Isso mantém o banco de dados de registro up-to-date se o arquivo executável do servidor for movido.

Observação

Os aplicativos MFC gerados pelo assistente de aplicativos se registram automaticamente quando são executados como aplicativos autônomos.

Se você quiser registrar seu aplicativo durante a instalação, use o programa RegEdit.exe. Se você incluir um programa de instalação com seu aplicativo, faça com que o programa de instalação execute "RegEdit /S appname.reg". (O sinalizador /S indica operação silenciosa, ou seja, não exibe a caixa de diálogo relatando a conclusão bem-sucedida do comando.) Caso contrário, instrua o usuário a executar o RegEdit manualmente.

Observação

O arquivo .reg criado pelo assistente do aplicativo não inclui o caminho completo para o executável. O programa de instalação deve modificar o arquivo .reg para incluir o caminho completo para o executável ou modificar a variável de ambiente PATH para incluir o diretório de instalação.

O RegEdit mescla o conteúdo do arquivo de texto .reg no banco de dados de registro. Para verificar o banco de dados ou repará-lo, use o editor do Registro. Tome cuidado para evitar excluir entradas OLE essenciais.

Inicialização do servidor

Quando você cria um aplicativo de servidor com o assistente de aplicativo, o assistente conclui todas as tarefas de inicialização automaticamente. Esta seção descreve o que você deve fazer se escrever um aplicativo de servidor manualmente.

Quando um aplicativo de servidor é iniciado por um aplicativo de contêiner, as DLLs do sistema OLE adicionam a opção "/Embedding" à linha de comando do servidor. O comportamento de um aplicativo de servidor difere dependendo se ele foi iniciado por um contêiner, portanto, a primeira coisa que um aplicativo deve fazer quando começa a execução é verificar a opção "/Embedding" ou "-Embedding" na linha de comando. Se esse alternador existir, carregue um conjunto diferente de recursos que mostrem o servidor como ativo em operação ou totalmente aberto. Para obter mais informações, consulte Menus e recursos: adições de servidor.

Seu aplicativo de servidor também deve chamar sua CWinApp::RunEmbedded função para analisar a linha de comando. Se ele retornar um valor diferente de zero, o aplicativo não deve mostrar sua janela porque foi executado a partir de um aplicativo contêiner, não como um aplicativo autônomo. Esta função atualiza a entrada do servidor na base de dados de registo do sistema e chama a função membro RegisterAll para si, efetuando o registo da instância.

Quando o aplicativo de servidor estiver sendo iniciado, você deve garantir que ele possa executar o registro de instância. O registro de instância informa as DLLs do sistema OLE que o servidor está ativo e pronto para receber solicitações de contêineres. Não adiciona uma entrada à base de dados de registo. Execute o registo de instância do servidor chamando a função de membro ConnectTemplate definida por COleTemplateServer. Isso conecta o CDocTemplate objeto ao COleTemplateServer objeto.

A ConnectTemplate função usa três parâmetros: CLSID, um ponteiro para o CDocTemplate objeto e um sinalizador indicando se o servidor suporta várias instâncias. Um miniservidor deve ser capaz de suportar várias instâncias, ou seja, deve ser possível que várias instâncias do servidor sejam executadas simultaneamente, uma para cada contêiner. Consequentemente, passe TRUE para este sinalizador ao iniciar um miniserver.

Se você estiver escrevendo um miniserver, por definição, ele sempre será iniciado por um contêiner. Você ainda deve analisar a linha de comando para verificar a opção "/Embedding". A ausência dessa opção na linha de comando significa que o usuário tentou iniciar o miniserver como um aplicativo autônomo. Se isso ocorrer, registre o servidor no banco de dados de registro do sistema e, em seguida, exiba uma caixa de mensagem informando o usuário para iniciar o miniserver a partir de um aplicativo contêiner.

Ver também

OLE
Servidores
CWinApp::RunAutomated
CWinApp::RunEmbedded
COleTemplateServer Classe