Compartir por


Registro

Cuando un usuario quiere insertar un elemento OLE en una aplicación, OLE presenta una lista de tipos de objeto entre los cuales elegir. OLE obtiene esta lista de la base de datos de registro del sistema, que contiene información proporcionada por todas las aplicaciones del servidor. Cuando un servidor se registra a sí mismo, las entradas que coloca en la base de datos del registro del sistema (el Registro) describen cada tipo de objeto que proporciona, extensiones de archivo y la ruta de acceso a sí misma, entre otras informaciones.

El marco y las bibliotecas de los vínculos dinámicos (DLL) del sistema OLE usan este registro para determinar qué tipos de elementos OLE están disponibles en el sistema. Los archivos DLL del sistema OLE también usan este registro para determinar cómo iniciar una aplicación del servidor cuando se activa un objeto vinculado o incrustado.

En este artículo se describe lo que cada aplicación del servidor debe hacer cuando se instala y cada vez que se ejecuta.

Para obtener información detallada sobre la base de datos de registro del sistema y el formato de los archivos .reg usados para actualizarlo, consulte la Referencia del programador OLE.

Instalación del servidor

Al instalar por primera vez la aplicación del servidor, se deben registrar todos los tipos de elementos OLE que se admiten. También se puede hacer que el servidor actualice la base de datos del registro del sistema cada vez que se ejecute como una aplicación independiente. Esto mantiene actualizada la base de datos del registro si se mueve el archivo ejecutable del servidor.

Nota:

Las aplicaciones MFC generadas por el Asistente para las aplicaciones se registran automáticamente cuando se ejecutan como aplicaciones independientes.

Si se desea registrar la aplicación durante la instalación, use el programa RegEdit.exe. Si se incluye un programa de instalación con la aplicación, haga que el programa de instalación ejecute "RegEdit /S appname.reg". (La marca /S indica la operación silenciosa, es decir, no se muestra el cuadro de diálogo que informa de la finalización correcta del comando). De lo contrario, indique al usuario que ejecute RegEdit manualmente.

Nota:

El archivo .reg creado por el asistente para aplicaciones no incluye la ruta de acceso completa para el ejecutable. El programa de instalación debe modificar el archivo .reg para incluir la ruta de acceso completa al ejecutable o modificar la variable de entorno PATH para incluir el directorio de instalación.

RegEdit combina el contenido del archivo de texto .reg en la base de datos del registro. Para comprobar la base de datos o repararla, use el editor del Registro. Tenga cuidado de evitar eliminar las entradas OLE esenciales.

Inicialización del servidor

Al crear una aplicación del servidor con el Asistente para aplicaciones, el asistente completa automáticamente todas las tareas de inicialización. En esta sección se describe lo que se debe hacer si se escribe manualmente una aplicación del servidor.

Cuando una aplicación contenedora inicia una aplicación del servidor, los archivos DLL del sistema OLE agregan la opción "/Embedding" a la línea de comandos del servidor. El comportamiento de una aplicación del servidor difiere en función de si se inició por un contenedor, por lo que lo primero que debe hacer una aplicación cuando comienza la ejecución es buscar la opción "/Embedding" o "-Embedding" en la línea de comandos. Si existe este interruptor, cargue un conjunto diferente de recursos que muestren al servidor como activo en el lugar o totalmente abierto. Para obtener más información, consulte Menús y recursos: adiciones del servidor.

La aplicación del servidor también debe llamar a su función CWinApp::RunEmbedded para analizar la línea de comandos. Si devuelve un valor distinto de cero, la aplicación no debe mostrar su ventana porque se ha ejecutado desde una aplicación contenedora y no como una aplicación independiente. Esta función actualiza la entrada del servidor en la base de datos del registro del sistema y llama a la función miembro RegisterAll automáticamente, realizando el registro de instancias.

Cuando se inicia la aplicación del servidor, se debe asegurar que se puede realizar el registro de instancias. El registro de instancias informa a los archivos DLL del sistema OLE de que el servidor está activo y listo para recibir las solicitudes de contenedores. No agrega una entrada a la base de datos del registro. Realice el registro de instancia del servidor llamando a la función miembro ConnectTemplate definida por COleTemplateServer. Esto conecta el objeto CDocTemplate al objeto COleTemplateServer.

La función ConnectTemplate toma tres parámetros: el clSID del servidor, un puntero al objeto CDocTemplate y una marca que indica si el servidor admite varias instancias. Un miniservidor tiene que ser capaz de admitir varias instancias, es decir, debe ser posible que varias instancias del servidor se ejecuten simultáneamente, una para cada contenedor. Por lo tanto, pase TRUE para esta marca cuando inicie un miniservidor.

Si se va a escribir un miniservidor, por definición siempre lo iniciará un contenedor. Todavía se debe analizar la línea de comandos para buscar la opción "/Embedding". La ausencia de esta opción en la línea de comandos significa que el usuario ha intentado iniciar el miniservidor como una aplicación independiente. Si esto ocurre, registre el servidor con la base de datos del registro del sistema y después muestre un cuadro de mensaje que informe al usuario de que inicie el miniservidor desde una aplicación contenedora.

Consulte también

OLE
Servidores
CWinApp::RunAutomated
CWinApp::RunEmbedded
COleTemplateServer (clase)