Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cuando un usuario desea insertar un elemento OLE en una aplicación, OLE presenta una lista de tipos de objetos entre los que elegir. OLE obtiene esta lista de la base de datos de registro del sistema, que contiene información proporcionada por todas las aplicaciones de servidor. Cuando un servidor se registra a sí mismo, las entradas que coloca en la base de datos de 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 vínculos dinámicos del sistema OLE (DLL) 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 de servidor cuando se activa un objeto vinculado o incrustado.
En este artículo se describe lo que cada aplicación de 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 de .reg usados para actualizarlo, consulte la referencia del programador OLE.
Instalación del servidor
Al instalar por primera vez la aplicación de servidor, debe registrar todos los tipos de elementos OLE que admite. También puede hacer que el servidor actualice la base de datos de registro del sistema cada vez que se ejecute como una aplicación independiente. Esto mantiene la base de datos de registro up-to-date si se mueve el archivo ejecutable del servidor.
Nota:
Las aplicaciones MFC generadas por el asistente para aplicaciones se registran automáticamente cuando se ejecutan como aplicaciones independientes.
Si desea registrar la aplicación durante la instalación, use el programa RegEdit.exe. Si 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 una operación silenciosa, es decir, no 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 archivo ejecutable. El programa de instalación debe modificar el archivo .reg para incluir la ruta de acceso completa al archivo 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 de registro. Para comprobar la base de datos o repararla, use el editor del Registro. Tenga cuidado para evitar eliminar entradas OLE esenciales.
Inicialización del servidor
Al crear una aplicación de 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 debe hacer si escribe manualmente una aplicación de servidor.
Cuando una aplicación contenedora inicia una aplicación de 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 de servidor difiere en función de si se ha iniciado por un contenedor, por lo que lo primero que debe hacer una aplicación cuando comienza la ejecución es comprobar si hay la opción "/Embedding" o "-Embedding" en la línea de comandos. Si este modificador existe, cargue un conjunto diferente de recursos que muestren el servidor como activo local o totalmente abierto. Para obtener más información, vea Menús y recursos: adiciones de servidor.
La aplicación de servidor también debe llamar a su CWinApp::RunEmbedded función 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, no como una aplicación independiente. Esta función actualiza la entrada del servidor en la base de datos de registro del sistema y llama a la RegisterAll función miembro automáticamente, realizando el registro de instancias.
Cuando se inicia la aplicación de servidor, debe asegurarse de que 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 solicitudes de contenedores. No agrega una entrada a la base de datos de registro. Realice el registro de instancia del servidor llamando a la ConnectTemplate función miembro definida por COleTemplateServer. Esto conecta el CDocTemplate objeto al COleTemplateServer objeto .
La ConnectTemplate función toma tres parámetros: clSID del servidor, un puntero al CDocTemplate objeto y una marca que indica si el servidor admite varias instancias. Un miniservidor debe 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 al iniciar un miniservidor.
Si está escribiendo un miniservidor, por definición siempre lo iniciará un contenedor. Todavía debe analizar la línea de comandos para comprobar la opción "/Insertar". 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 de registro del sistema y, a continuación, muestre un cuadro de mensaje que informe al usuario de iniciar el miniservidor desde una aplicación contenedora.
Consulte también
OLE
Servidores
CWinApp::RunAutomated
CWinApp::RunEmbedded
COleTemplateServer (clase)