Compartilhar via


Inscrição

Quando um usuário deseja inserir um item OLE em um aplicativo, o OLE apresenta uma lista de tipos de objeto para escolher. O 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 fornecido, extensões de arquivo e o caminho para si mesmo, entre outras informações.

A estrutura e as DLL (bibliotecas de vínculo dinâmico) 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 inserido é ativado.

Este artigo descreve o que cada aplicativo de servidor precisa fazer quando ele é instalado e cada vez que ele é 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 aos quais ele dá suporte. 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 aplicativo 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 a 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 de aplicativo não inclui o caminho completo para o executável. Seu 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.

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 a exclusão de 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 para você automaticamente. Esta seção descreve o que você deve fazer se você 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 é diferente 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 "/Incorporando" ou "-Embedding" na linha de comando. Se essa opção existir, carregue um conjunto diferente de recursos que mostram o servidor como totalmente aberto sendo ou ativo in-loco. 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 deverá mostrar sua janela porque ele foi executado a partir de um aplicativo de contêiner, não como um aplicativo autônomo. Essa função atualiza a entrada do servidor no banco de dados de registro do sistema e chama a função membro RegisterAll para você, executando o registro da instância.

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

A ConnectTemplate função usa três parâmetros: CLSID do servidor, um ponteiro para o CDocTemplate objeto e um sinalizador que indica se o servidor dá suporte a várias instâncias. Um miniservidor deve ser capaz de dar suporte a 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 esse sinalizador ao iniciar um miniservidor.

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

Consulte também

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