¿Cuáles son las diferencias entre los dos métodos de VB que opera el registro para crear objetos?
En la siguiente sección, primero presentaremos brevemente el concepto de componentes ActiveX y su clasificación, para que los lectores tengan una comprensión conceptual de los componentes ActiveX. Más adelante se dará una explicación más profunda y detallada de cómo registrar componentes ActiveX. Los controles ActiveX, las DLL ActiveX y los EXE ActiveX reciben métodos de registro específicos. Y sobre esta base, se dan algunas soluciones sobre cómo crear un instalador, instalar y registrar componentes ActiveX.
El concepto de componentes ActiveX
En nuestra lectura diaria y aprendizaje de programación, a menudo vemos términos como "control ActiveX" y "componente ActiveX". Entonces, ¿qué es un "control ActiveX", qué es un "componente ActiveX" y cuál es la diferencia entre ellos?
En primer lugar, debemos saber que un componente es una unidad de código independiente construida sobre tecnología ActiveX que proporciona un conjunto específico de servicios a través de una interfaz específica. Proporciona el objeto solicitado por el cliente en tiempo de ejecución. En Remote Data Services, cuando un componente contiene lógica de palabras clave que respalda un proceso de negocio, también se denomina "objeto de negocio".
En segundo lugar, ActiveX es un conjunto de tecnologías de empaquetado que permiten que los componentes de software interactúen en un entorno de red, independientemente del idioma en el que se creen estos componentes. La base para implementar ActiveX es el "Modelo de objetos componentes" (COM). También proporciona una forma de encapsular componentes COM y colocarlos en aplicaciones como (entre otras) navegadores web.
Finalmente, COM (Modelo de objetos componentes) mencionado en el párrafo anterior es una forma para que los componentes de software se comuniquen entre sí. Es un estándar binario y de red que permite que dos componentes cualesquiera se comuniquen entre sí, independientemente de en qué computadora se estén ejecutando (siempre que las computadoras estén conectadas entre sí), independientemente del sistema operativo que esté ejecutando cada computadora (siempre que el sistema operativo admite COM), independientemente del idioma en el que esté escrito el componente.
COM también proporciona transparencia de ubicación: cuando escribe un componente, los otros componentes son DLL en proceso, EXE locales y otros componentes ubicados dentro del proceso.
COM también proporciona transparencia de ubicación: cuando escribe un componente, no importa si el otro componente es una DLL en proceso, un EXE local o un componente ubicado en otra computadora.
De esta forma, podemos definir un componente ActiveX como una aplicación o herramienta de desarrollo que puede utilizar objetos soportados por otra aplicación, o proporcionar sus propios objetos para que los utilice otra aplicación. Estos programas y objetos se conocían anteriormente como "Programas de servicio de automatización OLE" y "Servidores de automatización OLE".
En cuanto a los controles ActiveX, son solo una clasificación de componentes ActiveX, un elemento de interfaz de usuario estándar, un archivo con una extensión de archivo .OCX o un objeto insertable que se puede ensamblar rápidamente en un formulario y cuadro de diálogo. ; el kit de herramientas se amplía cuando se agregan cuadros de diálogo de control personalizados al proyecto. En el pasado, los controles ActiveX se denominaban controles OLE. Los controles ActiveX también dan vida a Internet, añadiendo nuevas funciones interesantes a las páginas de la World Wide Web.
Tres categorías de componentes ActiveX
Los componentes ActiveX se pueden dividir en tres categorías:
● Control ActiveX
● Documento ActiveX p >
● Componente de código (OLE Automation Server)
(1) Control ActiveX
El usuario puede crearlo completamente desde cero o sobre otro. control, o puede acomodar múltiples controles existentes.
Por ejemplo, los controles ActiveX en VB se crean sobre los objetos UserControl de VB. Cuando crea un control ActiveX, se crea un archivo de clase de control con una extensión .ctl. Generalmente usamos este archivo para crear el control real con una extensión .ocx.
(2) Documento ActiveX
Por lo general, en un entorno de programación específico (como VB, VC), se puede crear una aplicación completa utilizando la semántica de los documentos tradicionales. En otras palabras, no sólo tiene la funcionalidad de una aplicación, sino también la flexibilidad de un documento: cuando un usuario abre un documento ActiveX, no sólo tendrá toda la funcionalidad de la aplicación, sino que también podrá mantener y publicar los datos originales de la aplicación."Copia de seguridad", por lo tanto, el "documento" es en realidad un "documento". Los "documentos" están realmente activos. Por ejemplo, los documentos VB ActiveX se basan en documentos de usuario VB. Cuando se crea un documento ActiveX, se guarda en un archivo con extensión .dob. VB utiliza este archivo DOB para crear archivos EXE o DLL que proporcionan el código real para el documento ActiveX. Además, VB genera un archivo de descripción con una extensión .vbd que describe el documento ActiveX y puede ser abierto por la aplicación host. Para los documentos ActiveX, los usuarios pueden guardar datos, que se almacenan en archivos VBD.
(3) Componentes de código
Anteriormente conocidos como OLE AutoServers. Estos objetos permiten a los usuarios utilizar su código en otros programas. Por ejemplo, hay una rutina de reloj que aparece en un componente de código para que otros programas puedan utilizarla. Los componentes de código (ActiveX EXE, ActiveX DLL) pueden admitir propiedades y métodos.
IV. Elegir construir componentes ActiveX
Cada componente de los componentes ActiveX tiene diferentes aplicaciones. Entonces, ¿cómo se decide determinar exactamente qué componente crear?
En primer lugar, es importante entender cómo funcionan los componentes ActiveX y sus correspondientes características. En términos generales, los componentes ActiveX se ejecutan de dos maneras: fuera de proceso y en proceso.
Si un componente ActiveX se utiliza como parte de un ejecutable (archivo EXE), entonces es un servidor fuera de proceso y se ejecuta en su propio proceso. Si lo usa como parte de una biblioteca de vínculos dinámicos (archivo DLL), entonces es un servidor en proceso y se ejecuta como una aplicación cliente en el proceso unity. Si el componente ActiveX del usuario es un servidor fuera de proceso, entonces es un archivo EXE y se puede ejecutar de forma independiente. Las aplicaciones que utilizan un servidor en proceso normalmente se ejecutan más rápido que las aplicaciones que utilizan un servidor fuera de proceso porque la aplicación no necesita cruzar los límites del proceso cuando utiliza propiedades, métodos y eventos de objetos.
Si el documento ActiveX se crea como un componente en proceso (archivo DLL), el rendimiento del componente en proceso será mejor que el del componente que también se compila como EXE. Además, si varios programas acceden al mismo archivo EXE, sobrescribirán los datos globales. Esto no sucederá si cada uno tiene su propio servidor en proceso;
El programa cliente y el componente en proceso *** comparten el mismo espacio de memoria, por lo que al depurar métodos del componente de código en proceso, puede usar la pila del programa cliente para perder parámetros. Para componentes fuera de proceso, al depurar un componente de código, los parámetros del método se deben mover para pasar el límite de memoria entre los dos procesos, lo que se denomina serialización.
De esto podemos sacar las siguientes conclusiones, es decir, cómo elegir el tipo de componente a crear:
(1) Si quieres crear una rutina invisible que proporcione Componente de rutinas en código invocable, puede crear un componente de código que proporcione rutinas en código invocable, o puede crear un componente invisible que proporcione rutinas en código invocable. Componente, puede crear un componente de código (ActiveX EXE o ActiveX DLL).
(2) Para crear un componente que pueda ejecutarse en el mismo proceso que la aplicación, puede crear una DLL ActiveX.
(3) Para crear un componente que pueda servir múltiples aplicaciones y ejecutarse en una computadora remota, puede crear un EXE ActiveX.
(4) Si desea crear un componente visible que pueda arrastrarse a la aplicación en tiempo de diseño, puede crear un control ActiveX.
(5)Para crear un componente visual que acepte una ventana de aplicación en tiempo de ejecución, cree un documento ActiveX.
En cuanto a cómo programar después de crear un componente y cómo utilizarlo, puede consultar libros sobre programación. Aquí, asumimos que se ha completado el diseño del componente ActiveX y luego analizamos en detalle el registro del componente ActiveX.
5. Varios métodos de registro para componentes ActiveX
Los diferentes componentes ActiveX tienen diferentes métodos de registro. Ahora nos centraremos en tres componentes diferentes: control ActiveX, ActiveX DLL y ActiveX EXE. solución.
1. Registrar control ActiveX
El control ActiveX no tiene nada que ver con la plataforma de desarrollo. Un control ActiveX desarrollado en un lenguaje de programación se puede utilizar en otro lenguaje de programación casi sin modificaciones. usar. Sin embargo, una vez desarrollado el control ActiveX, para poder utilizarlo correctamente en Windows, primero se debe copiar el archivo de control al disco duro y luego registrarlo en Windows. No se pueden utilizar controles ActiveX que no estén registrados con Windows. Hay varias formas de registrar un control ActiveX VB6.0:
(1) Utilice el programa Regsvr32.exe para registrar un control ActiveX VB. Este archivo se encuentra en el subdirectorio Sistema del directorio de Windows. El método es el siguiente: haga clic en "Inicio", haga clic en "Ejecutar" en el menú emergente e ingrese el siguiente comando en el cuadro de diálogo que aparece:
lt; ruta de control y nombre del archivo de control ActiveX. gt; registrar el control ActiveX. Aquí se puede omitir el nombre de ruta de regsvr32. Además, normalmente puede copiar un control ActiveX registrado en \windows\system para no tener que ingresar la ruta al control al registrarlo.
Si desea cancelar el registro de un control ActiveX, simplemente agregue el parámetro "/u" a regsvr32, que es el nombre del archivo de control ActiveX registrado.
(2) Utilizar determinados entornos de programación en las funciones de navegación. Por ejemplo, en VB6.0, puede hacer clic en "Proyecto" en la interfaz, hacer clic en el elemento "Partes" en el menú desplegable emergente y aparecerá una nueva interfaz. En esta interfaz, utilice el botón "Examinar" para buscar y seleccionar el control que desea registrar y luego regístrelo en la columna "Control" de la interfaz "Partes".
Después de registrar un control utilizando los dos métodos anteriores, puede permitir que los desarrolladores de componentes utilicen el control en la programación real.
(3) Utilice el programa de instalación InstallShield.
Usar el programa Regsvr32.exe para registrar un control ActiveX y usar "Examinar" para registrarse, aunque simple, requiere registro manual y desbloqueo manual cuando no está en uso, por lo que no es práctico para aplicaciones que usan el control. Generalmente las aplicaciones grandes requieren un instalador, y es muy práctico resolver el registro de controles ActiveX en el instalador. Utilice InstallShield para crear un instalador de nivel profesional y también puede registrar controles ActiveX y, cuando desinstale el software, puede cancelar automáticamente el registro de controles ActiveX previamente registrados. El método consiste en seguir el asistente de InstallShield para crear el programa de instalación y hacer clic en "Finalizar" en el último paso. "InstallShield" pasará al siguiente paso de "personalización detallada". Después de completar el último paso, haga clic en "Finalizar" e "InstallShield" pasará al siguiente paso de "personalización detallada". Seleccione la opción Grupo de archivos y cambie la propiedad Autorregistro a Sí para los archivos que contienen controles ActiveX que requieren autorregistro. ".
(4) Autorregistro durante el proceso de instalación. Los controles ActiveX deben registrarse durante el proceso de instalación antes de poder llamarlos en la aplicación. Normalmente, puede utilizar las herramientas de programación que vienen con el Instalación de las herramientas de producción para lograr este propósito. Todavía tomando VB6.0 como ejemplo. El uso de VB6.0 viene con el software de la herramienta para crear un programa de instalación: siempre que el control ActiveX esté incluido en el archivo de distribución. El Asistente de empaquetado e implementación reproducirá automáticamente los atributos del archivo desde que el control está registrado. Si no tiene éxito, podemos modificar el manifiesto del archivo de instalación del instalador, establecer el parámetro en la macro correspondiente en DLLSelfRegister y eliminar este elemento (tenga en cuenta que). la coma debe conservarse).
Por ejemplo, el siguiente es un control ActiveX del autor. Cuando utilice el método anterior para crear un instalador, cambie los siguientes parámetros a:
Archivo1=@clock1.ocx, $(WinSysPath), $(DLLSelfRegister), $(Compartido), 19/02/01 9:27:30 a.m., 36864, 1.0. 0.0
Uno de los gruesos El elemento del cuerpo $(DLLSelfRegister) es una configuración de parámetro macro que se utiliza para identificar el autorregistro
(5) Hay otro punto que algunas empresas necesitan. utilícelo al desarrollar el registro de controles ActiveX. Ejecute esta herramienta para registrar el control ActiveX correspondiente. Este sigue siendo un registro manual. Estos controles ActiveX generalmente tienen derechos de autor y tendrán instrucciones especiales. Registro de bibliotecas de enlaces dinámicos
El registro de bibliotecas de enlaces dinámicos ActiveX es básicamente similar al registro de controles ActiveX. El método de registro de controles ActiveX introducido anteriormente es básicamente aplicable al registro de bibliotecas de enlaces dinámicos ActiveX. Puede consultar el método de registro ActiveX Control anterior.
3. Registro de ActiveX EXE
Como componente fuera de proceso, el registro de ActiveX EXE es diferente. registro de controles ActiveX y DLL ActiveX, y es difícil de aplicar. Aquí, sus métodos de registro se resumen a continuación:
(1) Método "Examinar" como ejemplo. "Proyecto" en el menú desplegable emergente. Seleccione "Referencia" en el medio del menú, luego haga clic en "Examinar" en la nueva interfaz que aparece, busque y seleccione el componente que necesita registrarse.
Luego haga clic en "Examinar" en la nueva interfaz que aparece, busque y seleccione el componente que necesita registrarse y luego asegúrese de poder ver el elemento correspondiente en el medio de la lista.
(2) Ejecute el método directamente. Al registrar un componente ActiveX EXE fuera de proceso, el registro se puede lograr siempre que el código del componente se ejecute en el entorno VB6.0. En este punto, la información ActiveX EXE se agregará al registro de Windows. Sin embargo, es importante tener en cuenta que esta información sólo se agrega temporalmente cuando el programa se ejecuta en el entorno de desarrollo VB. Cuando el programa se detiene, la información sobre cómo acceder a estos objetos se borra del sistema.
(3) Utilice la herramienta de creación de instalación. Por ejemplo, en VB6.0, puede utilizar las herramientas que vienen con VB6.0 para crear software de instalación: durante el proceso de creación del instalador, se registra automáticamente. De lo contrario, también puede modificar la lista de archivos de instalación setup.lst del instalador, establecer el parámetro en la macro correspondiente en EXESelfRegister o eliminar la entrada si no se requiere el registro automático (tenga en cuenta que se debe conservar la coma).
Por ejemplo, el siguiente es un componente fuera de proceso programado por el autor. Después de usar el método anterior para crear el instalador, los parámetros detrás de él se convierten en:
[Setup1. Archivos]
Archivo1=@CommThread.exe, $(WinSysPath), $(EXESelfRegister), $(Compartido), 25/12/00 8:47:44 p.m., 57344, 1.0.0.0.0
Uno de los elementos en negrita $(EXESelfRegister) es la configuración del parámetro macro que identifica el autorregistro. Se puede agregar o eliminar manualmente.
(4) Si planea instalar un servidor fuera de proceso en otra máquina para el registro automático y salir del entorno de programación, primero puede copiar el archivo a otra máquina y luego ejecutar en la línea de comando Agregue el parámetro "/regserver" a la línea de comando. Si desea cancelar el registro, agregue el parámetro "/unregserver" a la línea de comando. Al registrar un servidor COM fuera de proceso usando la opción de comando /regserver, se ignora el comportamiento normal cuando el programa se inicia manualmente, es decir, no se llama a los procedimientos Sub Main o Class_Initialize y la lógica de registro solo se ejecuta cuando El entorno de programación está incluido en el archivo EXE.
VI.Resumen
Arriba, hemos hecho algunos resúmenes simples sobre la comprensión de los conceptos de los componentes ActiveX en el aprendizaje diario. En cuanto al registro, se dan algunos métodos prácticos. Por supuesto, también podemos hacerlo nosotros mismos y escribir algunos pequeños programas para registrar controles ActiveX. Por ejemplo, en VC, use la función API de Windows LoadLibrary para cargar el control ActiveX; luego use la función GetProcAddress para obtener el puntero del control ActiveX en la función de registro DLLRegisterServer (la función de cancelación del registro es DLLUnRegisterServer); DLLRegisterServer (o la función de cancelación de registro DLLUnRegisterServer). Si está interesado, puede consultar la información relevante y comenzar a programar usted mismo.
Por supuesto, en las aplicaciones de programación reales, a menudo se requiere el autorregistro. Para controles ActiveX y DLL ActiveX, puede crear un instalador que se registre automáticamente durante la instalación. Para ActiveX EXE, puede ser más problemático. Nos resulta imposible registrarlo en el entorno de programación compilando el código o navegando cada vez que ejecutamos el software.
A través de la práctica, hemos resumido los siguientes métodos para lograr el autorregistro:
(1) Utilice la herramienta de instalación que viene con la herramienta de programación para crear un programa de instalación, que puede realizar automáticamente el autorregistro de ActiveX. EXE durante la instalación.
(2) Utilice el parámetro /regserver para implementar el autorregistro. En la programación VB6.0, cuando necesite utilizar ActiveX EXE, puede llamar y realizar el registro automático al mismo tiempo a través de la función shell () del sistema VB6.0. El formato del comando es
shell "[ruta\] nombre de archivo /regserser"
Al desinstalar, simplemente reemplace /regserser con /unregserser. El nombre de ruta del archivo del componente se puede omitir si el archivo del componente está en el mismo directorio que la aplicación o en \windows\system\.
(3) Si desea utilizar Installshield para crear un instalador profesional para su aplicación y también requiere el registro automático de ActiveX EXE, puede utilizar Installshield para empaquetar la aplicación y utilizar ActiveX EXE para combinarla con VB6.0 está empaquetado, creando dos instaladores. Cuando están en uso, ambos programas de instalación se ejecutan una vez, lo que también puede cumplir con los requisitos, pero es más problemático.