OLE, ActiveX, COM, DCOM, VCL, CORBA, MTS,. . . ¡a la industria no le falta ciertamente para las siglas cuando viene al asunto de arquitectura del componente! En este capítulo, yo explico algunas de estas siglas y por lo menos menciono los otros pasando. Yo explicaré lo que estos términos significan y intentan verter alguna luz en el mundo a menudo-confundiendo de COM y ActiveX. Específicamente, yo cubro
Yo estaría quedando si yo dije que COM, ActiveX, y OLE son fáciles entender. Ellos no son. Puede ser al principio muy confundiendo. Yo no puedo hacer justicia a este asunto en un capítulo. Mi meta para este capítulo es darle bastante de un fondo en estas arquitecturas que para que usted pueda entender las siglas mejor que usted ve repetido aproximadamente estos días. Usted también conseguirá un poco de entrenamientos mano-encendidos buenos creando COM y mandos de ActiveX. Afortunadamente, Delphi saca mucho el dolor de trato con estos APIs.
Usted no puede hablar sobre OLE y ActiveX sin hablar sobre COM que simboliza a Modelo de Objeto de Componente.
Nuevo Término: COM (Modelo de Objeto de Componente) es una especificación de Microsoft por crear y llevar a cabo componentes reusables.
"¿Los componentes? Yo pensé que Delphi usó componentes de VCL." Ciertamente los componentes de VCL son el uso más eficaz de componentes en Delphi. Ellos no son la única posibilidad, sin embargo. Cuando usted trabaja a través de esta hora, usted conseguirá un cuadro más claro de cómo COM y ActiveX trabajan con Delphi.
COM es la base para OLE y " ActiveX. Una analogía podría ser que los TObject clasifican en VCL. Todos clasifican en VCL se hereda finalmente de TObject. Las clases derivadas consiguen las propiedades y métodos de TObject automáticamente. Ellos agregan sus propias propiedades y métodos entonces para proporcionar funcionalidad adicional. Semejantemente, se construyen OLE y ActiveX encima de COM. COM es la fundación para todos los OLE y objetos de ActiveX.
Como una arquitectura del componente, COM tiene dos beneficios primarios:
NOTA: Un inconveniente mayor a COM es que se ata pesadamente al WinTel (Windows/Intel) la plataforma. Para que aunque usted puede usar un objeto de COM en muchos Windows diferente que programa ambientes, usted necesariamente no puede usar ese COM objetan en un UNIX que programa ambiente. Recientemente Microsoft ha intentado mover COM a las plataformas de no-Windows, pero permanece ser visto si este esfuerzo tendrá éxito finalmente. Este capítulo sólo se trata de COM y ActiveX cuando ellos existen en el Win32 ambiente de la programación.
Usted puede acostumbrar varios idiomas diferentes y ambientes a escribir objetos de COM. Usted puede crear objetos de COM con Delphi, C++Builder, C++ Visual, Visual Básico, y probablemente unos otros ambientes de desarrollo. Cuando creó, un objeto de COM puede usarse en una variedad aun más ancha de ambientes de desarrollo. Un objeto de COM creado en Delphi puede ser usado por programador de VB, un programador de C++Builder, o incluso un dBASE Visual o programador de PowerBuilder.
Un objeto de COM se contiene típicamente en un DLL. Los DLL podrían tener una extensión de .DLL o podría tener una extensión de .OCX. Un solo archivo de la biblioteca (DLL o OCX) puede contener un COM individual objeta o puede contener varios objetos de COM.
COM está lleno de confundir terminología. Las secciones siguientes explican algunos de los términos usados en COM y cómo los muchos pedazos de ataque de COM juntos. Todos estos pedazos se interrelacionan, para que usted tendrá que leer la sección entera para conseguir el cuadro grande.
Nuevo Término: Un objeto de COM es un pedazo de código binario que realiza una función particular.
Un objeto de COM expone ciertos métodos para permitir a las aplicaciones acceder la funcionalidad del objeto de COM. Estos métodos se hacen disponible vía las interfaces de COM. Un objeto de COM podría contener simplemente una interface, o podría contener varias interfaces. A un programador, COM objeta trabaje mucho como el Objeto las clases de Pascal.
Acceda a un objeto de COM ha terminado la interface del objeto de COM.
Nuevo Término: Una interface de COM es los medios por que el usuario de un COM objeto accesos que la funcionalidad de objeto.
Una interface de COM se usa para acceder un objeto de COM; para usar el objeto, si usted quiere. La interface en efecto anuncia lo que el objeto de COM tiene que ofrecer. Un objeto de COM podría tener simplemente una interface, o podría tener varios. Además, un COM unen podría llevar a cabo uno o las interfaces de COM más adicionales.
COM une salida típicamente con la carta yo. Por ejemplo, la cáscara de Windows lleva a cabo que las interfaces llamaron IShellLink, IShellFolder, y IShellExtInit. Aunque usted puede usar cualquier convención nombrando que le gusta, el llevando yo identifico la clase universalmente y inmediatamente como una interface de COM a otros programadores.
Las interfaces de COM son manejadas internamente por Windows según su identifiers de la interface (IIDs). Un IID es un valor numérico contenido en una estructura del datos (un registro). El IID identifica una interface singularmente.
Nuevo Término: Una clase de COM (también conocido como un coclass) es una clase que contiene uno o más interfaces de COM.
Usted no puede usar una interface de COM directamente. En cambio, usted accede la interface a través de un coclass. Un coclass incluye una fábrica de la clase que crea la interface pedida y ingresos un indicador a la interface. Las clases de COM son identificadas por identifiers de la clase (CLSIDs). Un CLSID, como un IID, es un valor numérico que singularmente identifica una clase de COM.
Deben registrarse objetos de COM con Windows. Esto es donde CLSIDs y IIDs entran en la obra. CLSIDs y IIDs son muy sólo nombres diferentes para la misma estructura de los datos baja: el Globalmente Único Identifier (GUID).
Nuevo Término: Un GUID es un único 128-bit (16-byte) el valor.
GUIDs son creados por una COM biblioteca función especial llamado CoCreateGUID. Esta función genera un GUID que se garantiza ser único virtualmente. CoCreateGUID acostumbra una combinación de su información de la máquina, generación de número de azar, y una estampa de tiempo a crear GUIDs. Aunque es posible que CoCreateGUID podrían generar dos GUIDs que son idénticos, es muy improbable (más como una imposibilidad estadística).
Agradecidamente, programadores de Delphi no tienen que preocuparse por crear GUIDs. Delphi genera un GUID automáticamente cuando usted crea un nuevo objeto de automatización, COM objetan, ActiveX controlan, o mando de ActiveForm. GUIDs en Delphi son definidos por el registro de TGUID. TGUID se declara en System.pas como sigue:
TGUID = el registro D1: Entero; D2: Palabra; D3: Palabra; D4: array[0 ..7] de Byte; extremo;
Cuando usted crea que un nuevo COM objeta, Delphi crea el GUID automáticamente para usted. Por ejemplo, aquí es el GUID para una prueba que COM objetan que yo creé:
Class_Test: TGUID = ` {F34107A1-ECCF-11D1-B47A-0040052A81F8} ';
Porque se manejan GUIDs para usted por Delphi, usted no tendrá que preocuparse muchísimo por GUIDs típicamente. Usted quiere, sin embargo, vea mucho GUIDs cuando usted crea y usa que COM objeta (incluso los mandos de ActiveX).
PUNTA: Si usted necesita generar un GUID por mano, usted puede teclear Ctrl+Shift+G en el Editor del Código. Delphi generará un GUID para usted y lo insertará al punto del cursor.
COM objeta a menudo use una biblioteca del tipo.
Nuevo Término: Una biblioteca del tipo es un archivo especial que contiene información sobre un objeto de COM. Esta información incluye una lista de las propiedades, métodos, interfaces, estructuras, y otros elementos que el mando contiene. La biblioteca del tipo también proporciona información sobre los datos teclea de cada propiedad y el retorno teclee y parámetros de los métodos del objeto.
Esta información incluye los tipos de los datos en el objeto, los métodos y propiedades del objeto, la información de la versión, interfaces en el objeto, y así sucesivamente. Teclee pueden contenerse bibliotecas en el objeto de COM como recursos o cuando un archivo del standalone. Los archivos de biblioteca de tipo tienen una extensión de .TLB. Una biblioteca del tipo es necesaria si otros diseñadores van a usar sus objetos de COM como herramientas de desarrollo. La biblioteca del tipo de un objeto de COM contiene más información sobre el objeto que está disponible preguntando el objeto simplemente para sus interfaces. Por ejemplo, el Delphi IDE usa la información encontrada en bibliotecas del tipo para desplegar un mando de ActiveX en la paleta del Componente. Los usuarios de un objeto de COM pueden examinar la biblioteca del tipo para ver qué métodos y interfaces exactamente que el objeto contiene.
COM distribuído (DCOM) es un subconjunto de COM que proporciona la capacidad para usar objetos de COM por las redes o por el Internet. DCOM extiende COM para mantener el mecanismo usando COM en un ambiente de la gestión de redes. Una discusión detallada de DCOM está más allá del alcance de este libro, pero nota ese DCOM es definitivamente prevaleciente en ciertos tipos de programación de la red.
NOTA: CORBA (Demanda del Objeto Común Corredor Architecture) es una tecnología compitiendo a DCOM. CORBA es plataforma-independiente que lo hace más deseable que DCOM de muchas maneras. Además, CORBA es una arquitectura abierta apoyada por un consorcio de compañías del software (DCOM diferente que es una solución Microsoft-específica). Afortunadamente, Delphi le da la opción de crear DCOM y " objetos de CORBA.
Cada objeto de COM tiene una cuenta de la referencia. La cuenta de la referencia, naturalmente, contiene el número de procesos que están usando el objeto de COM actualmente. Un proceso es cualquier aplicación o DLL que usan un objeto de COM. Porque un objeto de COM puede ser usado una vez por cualquier número de procesos, el referencia contando se usa para determinar cuando el objeto de COM ya no se necesita en memoria.
Cuando un objeto de COM se crea, su cuenta de la referencia se inicializa a 1. La cuenta de la referencia es incrementada a través de uno cada tiempo que un proceso ata al objeto de COM. Cuando un proceso destaca del objeto de COM, la cuenta de la referencia es decremented a través de uno. Cuando la cuenta de la referencia consigue a 0, el objeto de COM se libra de la memoria.
Todas las interfaces de COM descienden de una interface baja llamado IUnknown. Mesa 15.1 listas los métodos de IUnknown.
Método | Descripción |
QueryInterface | Preguntas la interface para obtener una lista de interfaces apoyadas. |
AddRef | Incrementos la cuenta de la referencia de la interface. |
Descargo | Decrements la cuenta de la referencia de la interface. Cuando la cuenta de la referencia alcanza 0, el objeto se libra de la memoria. |
Yo menciono IUnknown principalmente por las razones históricas. Programadores de Delphi realmente no tienen que preocuparse mucho por IUnknown como otros programadores hace. Delphi cuida de referencia del manejo contando y librando la memoria para el objeto de COM. Delphi también eleva tratando con COM objeta a un nivel que hace un conocimiento íntimo de IUnknown todos menos obsoleto.
Ayudar traen esto en perspectiva, creemos un objeto de COM. Este objeto de COM será ridículamente simple pero debe ilustrar cómo usar y construir objetos de COM en Delphi. Los COM objetan usted crea tendrá estas características:
Tipo | Nombre | Descripción |
propiedad | X | El primer número para multiplicar. |
propiedad | Y | El segundo número para multiplicar. |
método | DoIt | Un método que multiplica los dos números y ingresos el resultado. |
Las secciones siguientes explican el proceso de crear el objeto de COM.
El primer paso creando un objeto de COM es crear un proyecto de DLL que contendrá el código del objeto de COM. Delphi acostumbra el término "Biblioteca de ActiveX" a referirse a todos los COM biblioteca proyectos. Esta descripción no es completamente exacta, pero es cierre bastante. Realice estos pasos para crear una Biblioteca de ActiveX:
Figure 15.1.La página de ActiveX del Almacén del Objeto.
Eso es todos hay a este paso del particular. Delphi crea un proyecto de DLL para usted y está esperando por su próximo movimiento.
El próximo paso es crear el COM objételo. Este paso también es relativamente simple. Realice estos pasos para hacer para que:
FIGURE 15.2. El COM Objeto Mago.
EL COM OBJETO MAGO
Permítame tomar un momento para hablar sobre el COM Objeto Mago. El campo de Nombre de Clase se usa para especificar el nombre de la clase para su objeto de COM. Teclee el nombre de la clase aquí, pero no hace prepend el nombre de la clase con o un T cuando usted habría para una clase de Delphi, ni un yo como es de costumbre para las interfaces. Delphi cuidará de crear la clase y la interface nombra automáticamente.
El campo de Instancing se usa para controlar cómo se manejan casos múltiples del objeto de COM. Las opciones incluyen Caso Interior, Solo, o el Caso Múltiple. Vea el "COM objetan al mago" el tema en la ayuda de Delphi para las descripciones de estas opciones del instancing (usted puede pulsar el botón las Ayudas abrochan en el COM Objeto Mago desplegar el tema de ayuda correcto).
El campo Ejemplar Enhebrando se usa para especificar cómo las aplicaciones del cliente pueden llamar su objeto de COM. Las opciones incluyen Solo, Apartamento, Libre, o Ambos. De nuevo, vea al Delphi ayudar para las descripciones de los modelos enhebrando.
El campo de las Interfaces Llevado a cabo es que donde usted agrega que los nombres de cualquier interface que sus COM objetan llevarán a cabo. Si usted tiene una interface llamado IMyFileIO y usted quiere usar esa interface en su nuevo objeto de COM, usted teclearía IMyFileIO en este campo.
El campo de la Descripción se usa para proporcionar una descripción para el objeto de COM. La descripción es optativa, pero es una idea buena para proporcionar uno.
Cuando el Incluya la Tipo Biblioteca cheque caja se verifica, Delphi creará una biblioteca del tipo para el objeto de COM. Creando una biblioteca del tipo habilita que sus COM objetan para ser usados por aplicaciones del cliente.
Bien, volvamos trabajar:
Cuando usted pulsa el botón el botón de OK, Delphi crea una unidad para la clase del objeto de COM y despliegues el Editor de Biblioteca de Tipo, como mostrado en Figura 15.3. Antes de continuar, yo necesito tomar un momento para hablar sobre el Editor de Biblioteca de Tipo.
El Editor de Biblioteca de Tipo es acostumbrado a manipular una biblioteca del tipo. El Editor de Biblioteca de Tipo le permite agregar o quitar interfaces, agregue propiedades y métodos a las interfaces, quite elementos de las interfaces, y cree al organizador de otros elementos de COM como enumeraciones, archivos, o coclasses. El Editor de Biblioteca de Tipo lo hace fácil de agregar elementos a una biblioteca del tipo. Usted aprenderá sobre agregar elementos en la próxima sección cuando usted agrega propiedades y un método al objeto de COM.
En el lado izquierdo del Editor de Biblioteca de Tipo la hoja de vidrio del Objeto está. La hoja de vidrio del Objeto contiene un mando de vista de árbol. En la cima de la jerarquía de vista de árbol la propia biblioteca del tipo está. Debajo de la biblioteca del tipo elementos contenidos en la biblioteca del tipo están. En Figura 15.3, usted ve dos elementos: los IMultiply unen y el Multiplique coclass.
En el lado correcto del Editor de Biblioteca de Tipo la hoja de vidrio de Información está. Esta hoja de vidrio proporciona información actualmente sobre el objeto seleccionado en la hoja de vidrio del Objeto. La información presentada en la hoja de vidrio de información varía con el tipo de objeto seleccionado. Los Atributos compaginan muestra el nombre de biblioteca de tipo, su GUID, versión, cordón de ayuda, archivo de ayuda, y así sucesivamente,.
NOTA: ¿Recuerda antes cuándo yo dije que programadores de Delphi no necesitan preocuparse mucho por GUIDs? Los COM simplemente objetan usted ya creó tiene un GUID, como hace la propia biblioteca del tipo. Delphi crea estos GUIDs automáticamente para usted. Cuando yo dije antes, usted verá mucho GUIDs cuando usted trabaja con COM objeta, pero usted no tiene que preocuparse por crearlos.
Cuando el nodo de biblioteca de tipo se selecciona, la hoja de vidrio de Información muestra que una etiqueta etiquetó Usos. Cuando usted pulsa el botón en esta etiqueta que usted verá una lista de bibliotecas del tipo en las que esta biblioteca del tipo cuenta. En casi todos casos, esta lista incluirá la OLE Automatización biblioteca, pero puede contener otros también. Las bibliotecas exactas una biblioteca del tipo particular confía depende del tipo y complejidad del objeto de COM que la biblioteca del tipo describe.
La página del Texto muestra las definiciones de biblioteca de tipo en sintaxis de IDL. IDL es que la clase de un idioma del scripting creaba archivos de biblioteca de tipo binarios. Usted no debe cambiar nada del texto en esta etiqueta a menos que usted sabe lo que usted está haciendo exactamente. Usted puede, sin embargo, refiérase a la página del Texto para la referencia. Esto probablemente es de más valor a los programadores experimentados que a los principiantes.
Podrían desplegarse otras páginas en la hoja de vidrio de Información que depende del tipo de objeto seleccionada. Para detalles completos, esté seguro leerle tema de ayuda al "Editor de Biblioteca de Tipo" en la ayuda de Delphi.
Usted aprenderá más sobre el Editor de Biblioteca de Tipo cuando usted trabaja a través del resto del capítulo. Ahora volvamos a crear el objeto de COM.
Antes de ir más allá, usted debe ahorrar el proyecto de nuevo. Usted no lo comprendió, pero Delphi creó una nueva unidad cuando usted creó que los COM objetan en el paso anterior. Escoja File|Save Todos del menú principal y ahorre la unidad como MultiplyU.
Ahora usted está listo hacer a los COM objetar haga algo. Recuerde, este objeto de COM es increíblemente simplista, para que no hará mucho, pero hará algo por lo menos.
PROPIEDADES AGREGANDO
Primero usted agregará propiedades al objeto de COM. Aquí está los pasos:
Agregando un Método
Luego, usted agrega un método. Realice estos pasos:
función DoIt: Entero;
Ahora que usted ha agregado las dos propiedades y métodos, es tiempo para ver lo que Delphi ha estado haciendo detrás de las escenas. 15.1 muestras listando la unidad de la clase cuando aparece después de realizar los pasos a a este punto. (No preocupa si su unidad no se parece Listando 15.1 exactamente. Mi versión de Delphi podría haber agregado código en un orden ligeramente diferente que suyo.)
unidad MultiplyU; interface usos Windows, ActiveX, ComObj, ComTest_TLB,; tipo TMultiply = el class(TTypedComObject, IMultiply) protegido función DoIt: Entero; el stdcall; función Get_X: Entero; el stdcall; función Get_Y: Entero; el stdcall; procedimiento Set_X(Value: Entero); el stdcall; procedimiento Set_Y(Value: Entero); el stdcall; {Declare métodos de IMultiply aquí} extremo; aplicación usos ComServ; función TMultiply.DoIt: Entero; empiece extremo; función TMultiply.Get_X: Entero; empiece extremo; función TMultiply.Get_Y: Entero; empiece extremo; procedimiento TMultiply.Set_X(Value: Entero); empiece extremo; procedimiento TMultiply.Set_Y(Value: Entero); empiece extremo; inicialización TTypedComObjectFactory.Create(ComServer, TMultiply, Class_Multiply, ciMultiInstance, tmSingle); extremo.
Ésta es la cáscara del objeto de COM. Aviso que la clase de TMultiply se deriva de TTypedComObject y " IMultiply. (A programadores de C++, esto podría parecerse herencia múltiple. No es ninguna herencia precisamente múltiple, pero es similar de algunas maneras.) Usted no ha visto al IMultiply clasificar todavía, pero usted lega un pedazo después. Usted debe rellenar esta cáscara para hacer los COM objete haga algo. Usted hará ese próximo.
Usted agregará código ahora a la clase de TMultiply hacer a los COM objetar funcional. Realice estos pasos (refiérase a Listar 15.2 si necesario):
privado FX: Entero; FY: Entero;
Resultado := FX;
Resultado := FY;
Resultado := FX * FY;
FX := el Valor;
FY := el Valor;
Ése es todos que usted necesita hacer. Su código debe parecerse Listando 15.2 ahora.
unidad MultiplyU; interface usos Windows, ActiveX, ComObj, ComTest_TLB,; tipo TMultiply = el class(TTypedComObject, IMultiply) privado FX: Entero; FY: Entero; protegido función DoIt: Entero; el stdcall; función Get_X: Entero; el stdcall; función Get_Y: Entero; el stdcall; procedimiento Set_X(Value: Entero); el stdcall; procedimiento Set_Y(Value: Entero); el stdcall; {Declare métodos de IMultiply aquí} extremo; aplicación usos ComServ; función TMultiply.DoIt: Entero; empiece Resultado := FX * FY; extremo; función TMultiply.Get_X: Entero; empiece Resultado := FX; extremo; función TMultiply.Get_Y: Entero; empiece Resultado := FY; extremo; procedimiento TMultiply.Set_X(Value: Entero); empiece FX := el Valor; extremo;
procedimiento TMultiply.Set_Y(Value: Entero);
empiece FY := el Valor; extremo; inicialización TTypedComObjectFactory.Create(ComServer, TMultiply, Class_Multiply, ciMultiInstance, tmSingle); extremo.
Aunque usted estaba trabajando en la unidad de MulitplyU, Delphi era edificio ocupado la biblioteca del tipo y una unidad para contener el código de biblioteca de tipo. La unidad tiene el mismo nombre como el proyecto con un _TLB arrastrando. Este proyecto se nombra ComTest. El nombre de la unidad lleno para la unidad de biblioteca de tipo, entonces, es ComTest_TLB.pas. 15.3 muestras listando esta unidad cuando existe a estas alturas. Recuerde, su unidad no podría parecerse Listando 15.3 exactamente.
unidad ComTest_TLB; / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / / / ADVIRTIENDO / / / /------- / / / / Se generaron los tipos declarados en este archivo de datos leídos de un / / / / La Biblioteca del tipo. Si esta biblioteca del tipo es explícitamente o indirectamente (vía / / / / otra biblioteca del tipo que se refiere a esta biblioteca del tipo) el reimported, o / / / / el `Refresh ' el orden del Editor de Biblioteca de Tipo activó mientras / / / / revisando la Biblioteca del Tipo, los volúmenes de este archivo serán / / / / regeneró y todas las modificaciones manuales se perderán. / / / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / / / PASTLWTR: $Revision: 1.11.1.55 $ / / El archivo generó en 6/8/98 7:16:51 PM de Biblioteca del Tipo descrita debajo. / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / / / El tipo Lib: D:\Borland\D4\Bin\ComTest.tlb / / IID\LCID: {7CDAFB76-FF36-11D1-81F1-0040052A83C4}\0 / / Helpfile: / / HelpString: Biblioteca de ComTest / / La versión: 1.0 / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / interface usos Windows, ActiveX, Clases, Gráficos, OleCtrls, StdVCL,; / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / / / GUIDS declaró en el TypeLibrary. Se usan prefijos siguientes: / / / / Las Bibliotecas del tipo: LIBID_xxxx / / / / CoClasses: CLASS_xxxx / / / / DISPInterfaces: DIID_xxxx / / / / No-DISP las interfaces: IID_xxxx / / / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / const LIBID_ComTest: TGUID = ` {7CDAFB76-FF36-11D1-81F1-0040052A83C4} '; IID_IMultiply: TGUID = ` {7CDAFB77-FF36-11D1-81F1-0040052A83C4} '; CLASS_Multiply: TGUID = ` {7CDAFB79-FF36-11D1-81F1-0040052A83C4} '; tipo / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / / / La declaración delantera de interfaces definió en Biblioteca del Tipo / / / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / IMultiply = la interface; / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / / / La declaración de CoClasses definió en Biblioteca del Tipo / / / / (NOTA: Aquí nosotros trazamos cada CoClass a su Interface Predefinida) / / / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / Multiplique = IMultiply; / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / / / La interface: IMultiply / / Las banderas: (0) / / GUID: {7CDAFB77-FF36-11D1-81F1-0040052A83C4} / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / / IMultiply = el interface(IUnknown) [` {7CDAFB77-FF36-11D1-81F1-0040052A83C4} '] función Get_X: Entero; el stdcall; procedimiento Set_X(Value: Entero); el stdcall; función Get_Y: Entero; el stdcall; procedimiento Set_Y(Value: Entero); el stdcall; función DoIt: Entero; el stdcall; extremo; CoMultiply = la clase la función de la clase Crea: IMultiply; función de la clase CreateRemote(const MachineName: cordón): IMultiply; extremo; aplicación usos ComObj;
función de la clase CoMultiply.Create: IMultiply;
empiece Resultado := CreateComObject(CLASS_Multiply) como IMultiply; extremo; función de la clase CoMultiply.CreateRemote(const MachineName: cordón): ÂIMultiply; empiece Resultado := CreateRemoteComObject(MachineName, CLASS_Multiply) como ÂIMultiply; extremo; extremo.
Note que esta unidad contiene la declaración para la interface de IMultiply. Cuando usted puede ver, IMultiply se deriva de IUnknown. También note que que esta unidad contiene que los coclass Multiplican.
Es importante entender que que esta unidad se regenera cada tiempo que usted compile un ActiveX biblioteca proyecto. Se genera del archivo de biblioteca de tipo. Note la advertencia a la cima de la unidad. Los comentarios están diciéndole que se perderá cualquier cambio que usted hace a este archivo la próxima vez que el objeto de COM se reconstruye. Realmente no hace cualquier bueno para modificar el tipo biblioteca fuente archivo, porque se regenerará automáticamente.
Ahora usted está listo compilar el ActiveX biblioteca proyecto. Este paso compila los COM objetan y figuras el DLL en el que el objeto de COM reside. Después de construir el COM objete, usted puede registrarlo. Aquí está los pasos:
Delphi registra que los COM objetan DLL con Windows. Después de que el DLL ha sido registrado, Delphi despliega una caja del mensaje, como mostrado en Figura 15.4.
FIGURE 15.4. Delphi que informan el COM objetan substancialmente registrado.
Cuando Windows registra que los COM objetan, agrega información sobre el objeto al Registro. Figure 15.5 muestras la entrada del Registro creada cuando el objeto de COM era registrado con Windows.
FIGURE 15.5. La llave del Registro creó cuando el objeto de COM era registrado.
NOTA: Delphi envía con una utilidad llamado TREGSVR.EXE que puede ser acostumbrado a registrar un mando de ActiveX de la línea del orden. Registrar un mando llamado MYSTUFF.OCX, usted ejecutaría TREGSVR de una sugerencia del orden gusta esto:tregsvr mystuff.ocx
Al unregister un ActiveX, use los -u cambian como sigue:
tregsvr -u mystuff.ocx
A veces esto es más conveniente que cargando un proyecto de ActiveX en Delphi y registrando o unregistering el mando del IDE.
NOTA: En este ejercicio yo lo hice crea un objeto de COM. Usted también podría usar un objeto de automatización. Un objeto de automatización deriva de IDispatch en lugar de IUnknown. IDispatch proporciona la funcionalidad adicional requerida para un objeto de COM para actuar como un servidor de automatización (un objeto que puede controlar una aplicación de otro).
Su objeto de COM está ahora listo para usar.
Un objeto de COM no lo hace muy bueno si usted no puede usarlo. En este paso, usted crea una aplicación que usa el COM simplemente objete usted creó. Siga estos pasos:
ComObj ComTest_TLB
procedimiento TForm1.Button1Click(Sender: TObject); var Mult: IMultiply; Res: Entero; empiece Mult := CreateComObject(CLASS_Multiply) como IMultiply; si Assigned(Mult) entonces empieza Mult.Set_X (20); Mult.Set_Y (60); Res := Mult.DoIt; Label1.Caption := IntToStr(Res); extremo; extremo;
Este código declara un indicador primero a la interface de IMultiply llamó Mult y un Entero inconstante sostener el resultado. Luego, la función de CreateComObject se llama con un parámetro de CLASS_Multiply. CLASS_Multiply es una constante que contiene el GUID para el COM objete clase (refiérase a Listar 15.3).
El valor del retorno de CreateComObject se asigna al indicador de Mult. Aviso que yo uso el cuando operador lance el valor del retorno a un indicador de IMultiply. CreateComObject devuelve un indicador de IUnknown, para que el cuando operador es acostumbrado a lanzar el indicador de IUnknown a un indicador de IMultiply.
Después de que el objeto de COM se crea, yo asigno valores a los X y a propiedades de Y. Después de eso yo llamo el método de DoIt del objeto de COM y despliego el resultado en el componente de la Etiqueta.
NOTA: En el mundo real, yo habría escrito el procedimiento precediendo diferentemente. Por ejemplo:procedimiento TForm1.Button1Click(Sender: TObject); empiece con CreateComObject(CLASS_Multiply) como IMultiply empieza Set_X(20); Set_Y(60); Label1.Caption := IntToStr(DoIt); extremo; extremo;
Yo escribí la manera al procedimiento que yo hice para ilustrar cada paso.
Ejecute el programa. Cuando usted pulsa el botón el botón de la forma, la etiqueta debe cambiar para decir "1200" (el producto de 20 * 60). ¡Ése es él! Sus COM objetan trabajos. Este objeto de COM puede usarse de C++ Básico, Visual Visual, C++Builder, o cualquier otro ambiente de desarrollo que apoyan COM.
ActiveX es un relativamente nuevo término para una tecnología para la que ha sido por un rato alrededor. Originalmente se llamaron mandos de ActiveX los mandos de OCX. El término que OCX todavía se usa ampliamente en algunos círculos. Un mando de ActiveX tiene una extensión del filename de DLL o OCX típicamente.
Un mando de ActiveX es esencialmente un objeto de COM en fingimiento. La diferencia primaria entre un mando de ActiveX y un objeto de COM es que un mando de ActiveX tiene una interface del plan-tiempo. Un mando de ActiveX también tiene código que le permite que sea desplegado en una página de Tejido o encima de una red. ActiveX es un subconjunto de COM, para que todo lo que usted aprendió sobre los objetos de COM en la primera parte del capítulo también aplica a los mandos de ActiveX.
No hay mucho saber sobre instalar y usar mandos de ActiveX terceristas. Todos que usted tiene que hacer son importación el ActiveX en el IDE y empiezan usando el mando. Para ver cómo esto trabaja, hagamos un ejercicio rápido. Este ejercicio requiere que usted tiene Microsoft Internet Explorador instalado en su sistema. Si usted no tiene Explorador de Internet instalado, salte este ejercicio. (Usted no estará extrañando nada porque yo le muestro cómo instalar un mando de ActiveX que usted ha construido en la sección "la Figura, Registre, y Instale el Mando".) Realice estos pasos:
FIGURE 15.6.La Importación ActiveX dialogan caja.
Experimente con los nuevos mandos y ve cómo ellos trabajan. Usted no se pondrá muy lejano probablemente sin la documentación, pero por lo menos usted consigue un sentido para cómo instalando un trabajos de ActiveX. (Para una explicación más completa de usar al Explorador de Internet como un ActiveX, vea la sección, "Usando al Explorador de Internet como un Mando de ActiveX" en el Día de la Paga extraordinaria, "Construyendo Aplicaciones de Internet".)
NOTA: Usted debe tener una licencia del plan-tiempo para usar un mando de ActiveX instalado. Una licencia del plan-tiempo es un archivo con una extensión de .LIC. En algunos casos usted puede importar mandos de ActiveX a la Delphi Componente paleta sin una licencia del plan-tiempo, pero usted conseguirá un mensaje del error cuando usted intenta poner el mando en su forma.
Quitar al Explorador de Internet controla de la paleta del Componente, escoja Paquetes de Component|Install del menú principal. Localice el Internet Explorador Paquete en el Plan empaqueta caja de la lista y pulsa el botón el Quite botón. La etiqueta de ActiveXTest está alejada de la paleta del Componente.
NOTA: Desplegando una aplicación que usa mandos de ActiveX requiere atención especial. Se cubren aplicaciones desplegando que usan mandos de ActiveX en detalle en el Día de la Paga extraordinaria en la sección "Desplegando Aplicaciones de Internet."
Hay dos maneras de crear un mando de ActiveX en Delphi:
En esta sección, usted crea un mando de ActiveX que usa los dos de estos métodos.
Creando un mando de ActiveX de un componente de VCL existiendo es francamente simple. Después de que usted crea un componente, usted puede convertirlo en absoluto en un mando de ActiveX por ningún tiempo. Yo no he hablado sobre crear componentes todavía, para que yo no quiero entrar en mucho detalle en crear componentes ahora (cubrió en Día 20, "Creando Componentes"). Lo que usted hará, entonces, es cree un mando de ActiveX de uno de los componentes de VCL proporcionado por Borland.
Genere el ActiveX Project con el ActiveX Mando Mago
El primer paso es generar el proyecto de ActiveX. Como siempre, Delphi hace la mayoría del trabajo para usted. Todos que usted tiene que hacer son suministro unos campos en el ActiveX Mando Mago. Aquí está los pasos:
FIGURE 15.7.El ActiveX Mando Mago.
Delphi creará un archivo del proyecto (ButtonXControl1.bpr) y tres unidades para el proyecto. La primera unidad es los TButtonX clasifican unidad (ButtonXImp1.pas). La segunda unidad es el archivo de biblioteca de tipo para el mando, nombró ButtonXControl1_TLB.pas. Este archivo contiene la información que Delphi necesita crear la biblioteca del tipo para el mando. El tercer archivo, About1.pas, es la unidad para el Sobre la caja. Si usted quiere personalizar el Sobre la caja, usted puede hacer eso en este momento. El Sobre la caja es simplemente otro Delphi forman, para que se siente libre para personalizarlo de forma alguna le gusta.
NOTA: El info de la versión se requiere para que su ActiveX controla para trabajar en Visual Básico.
Construya, Registre, y Instale el Mando
Porque usted no está haciendo ninguna modificación al propio mando, usted puede saltar derecho a construir el mando y registrarlo. Éste es el mismo proceso por el que usted pasó cuando usted registró que los COM objetan usted creó antes. Un paso extra se requiere cuando llevando a cabo ActiveX controla, sin embargo, porque los mandos de ActiveX tienen una interface del plan-tiempo. Prueba esto:
Pruebe el Mando de ActiveX
Ahora usted puede probar su nuevo mando de ActiveX. Primero, cree un nuevo proyecto.
NOTA: Cuando usted crea un nuevo proyecto, Delphi lo incitará ahorrar el archivo del paquete (DCLUSR40.DPK) y los ActiveX controlan proyecto. Si usted ahorra estos archivos depende de usted. Mi intención era a usted haga cree un ActiveX rápido. Hay realmente ninguna necesidad de ahorrar los archivos. Si, sin embargo, usted piensa que usted podría querer ahorrar los archivos para examinarlos después, ahorre los archivos.
Ahora siga estos pasos:
MessageDlg (`Hey, funciona! ', mtInformation, [el mbOK], 0);
NOTA: La idea detrás del uno-paso ActiveX es tomar un funcionamiento el componente de VCL y crear un mando de ActiveX de ese componente. La mayoría del tiempo, usted no tendrá que modificar el ActiveX codifica de forma alguna. Sin embargo, usted puede modificar ciertamente los ActiveX codifican después de que ha sido generado por Delphi si usted para que el deseo. Sea consciente, sin embargo, que si usted regenera que los ActiveX codifican de su componente de VCL original, se perderán todos los cambios hechos a la fuente de ActiveX.
NOTA: Usted puede crear ActiveX sólo controla del windowed VCL controla (los mandos derivaron de TWinControl o uno de sus descendientes). La lista de mandos de VCL de los que usted puede construir un mando de ActiveX contiene que todos instalaron componentes que específicamente se encuentran este criterio.
Unregister el Mando de ActiveX
Después de experimentar con su nuevo mando de ActiveX, usted debe unregister él para que no ocupe espacio en el Registro. Al unregister los ActiveX controlan, haga esto:
Alternativamente, usted puede cargar los ActiveX proyectan (si usted lo salvara previamente) y escoge Run|Unregister ActiveX Servidor del menú principal.
NOTA: Si todo el resto falla, usted siempre puede localizar que los ActiveX controlan en el Registro y anulan la llave para ese mando. Use la función del hallazgo del Editor del Registro para encontrar la llave (búsqueda para el nombre del mando o su GUID). Naturalmente, usted quiere tener cuidado al revisar el Registro por mano.
Creando un ActiveForm casi es tan fácil como creando un ActiveX de un componente de VCL existiendo. Naturalmente, usted puede crear un ActiveX complejo que contiene muchos componentes en una sola forma. Contrariamente a lo que su nombre implica, sin embargo, un ActiveForm puede ser acostumbrado a crear un ActiveX simple controle desde el principio (un botón coloreado, por ejemplo). En otras palabras, ActiveForms son no sólo por crear formas elegantes con docenas de cosas. Ellos son por crear solo-uso ActiveX también controla.
En esta sección, usted creará un ActiveForm. El ActiveForm tendrá dos revisar mandos, una etiqueta y un botón. El botón tomará que los volúmenes de los dos revisan mandos, los multiplican juntos, y despliegan el resultado en la etiqueta. Sí, yo sé que no exige a mucha imaginación pegar con el "multiplique dos números" la idea, pero mi meta es mostrarle cómo crear un ActiveForm con la cantidad mínima de código. Guardando el código a un mínimo le permite enfocar en el ActiveForm creación proceso sin se hundido abajo en código.
Cree el ActiveForm
Creando un ActiveForm es tan fácil que está asombrando. Siga estos pasos:
Delphi crea las unidades requeridas y despliegues una forma.
Cree la Forma
Una forma de ActiveForm está justa una forma regular en esta fase. Usted puede agregar mandos a la forma, puede agregar código, y simplemente puede responder a los eventos gusta usted hace para una forma que pertenece a una aplicación. La una diferencia es que la barra del título en un ActiveForm no aparece en el propio mando. Está allí justo en momento del plan.
En este paso, usted agregará componentes y codificará para hacer los ActiveForm funcional. Cuando usted trabaja a través de los pasos, podría ayudar referirse para Figurar 15.8 después en el capítulo que muestra la forma completada. Yo voy darle los componentes primarios en los pasos siguientes y permitirlo termine el resto adelante su propio. Realice estos pasos:
procedimiento TMyFormX.GoButtonClick(Sender: TObject); empiece prueba ResultLbl.Caption := IntToStr ( StrToInt(Num1Edit.Text) * StrToInt(Num2Edit.Text)); excepto en EConvertError haga ¡MessageDlg (`Oops! Usted entró en un valor inválido. ', mtError, [el mbOK], 0); extremo; extremo;
FIGURE 15.8. El ActiveForm terminado.
Construya, Registre, y Importe el ActiveForm
Ahora usted puede construir, puede registrar, y puede importar el ActiveForm. Cuando construyó, el ActiveForm está como cualquier otro mando de ActiveX. Porque usted ha hecho este varios tiempos ahora, yo no voy a revisar cada paso. Siga estos pasos:
El ActiveForm se instala ahora como un mando de ActiveX.
Pruebe el ActiveForm
Ahora es tiempo para tomar el ActiveForm para un paseo de la prueba. Esto será bastante simple:
Eso es todos él hay a. ¡Con Delphi, grande-mirando mandos de ActiveX son una brisa para crear! No hay ambiente de desarrollo mejor simplemente por crear ActiveX controla que Delphi, no obstruya ninguno.
Finalmente usted querrá cambiar el bitmap del ActiveX del valor por defecto que Delphi proporciona a uno de su propio plan. Cambiando el bitmap requiere siguiendo estos pasos:
TActiveFormFactory.Create ( ComServer, TActiveFormControl, TMyFormX, Class_MyFormX, 1, {el cambio este número. } ` ', OLEMISC_SIMPLEFRAME o OLEMISC_ACTSLIKELABEL, tmApartment);
Alternativamente, usted puede modificar los .RES del proyecto de ActiveForm archivan y cambian los bitmap nombrados 1 para parecerselo quieren.
Uno de los grandes rasgos de ActiveForms es que usted puede usarlos en una página de Tejido. Para usar un ActiveForm en una página de Tejido, usted debe usar el Tejido Despliegue opción. El Tejido usando Despliega que requiere un servidor de Tejido, para que yo no puedo atravesarlo el proceso de despliegue de Tejido eficazmente. Yo puedo, sin embargo, délo un poco la visión en el proceso. Cuando usted escoge Tejido Despliegue, Delphi realiza dos tareas:
Las situaciones de estos archivos son determinadas por las opciones de despliegue de Tejido. Miremos ese próximo.
Antes de que usted pueda usar Tejido Despliegue, usted debe poner las opciones de despliegue de Tejido. Para poner las opciones de despliegue de Tejido, escoja Project|Web Despliegue Opciones del menú principal. Las Opciones de Despliegue de Tejido dialogan la caja se despliega, como mostrado en Figura 15.9.
Figure 15.9. Las Opciones de Despliegue de Tejido dialogan caja.
Al fondo de las Opciones de Despliegue de Tejido dialoge la caja es una caja del cheque etiquetó Valor por defecto. Verifique esta caja que si usted quiere las escenas que usted ha especificado para ser los nuevos valores por defecto para los proyectos del futuro. La mayoría del tiempo, usted desplegará al mismo sitio de Tejido, para que usted querrá poner los valores por defecto probablemente que después de que usted tiene todo preparado justo la manera que usted lo quiere.
Los Directorios y la sección de URLs es donde usted especifica la situación designado para su ActiveX. El campo del dir Designado se usa para especificar el directorio donde Delphi copiará el ActiveX después de que se construye. Este campo debe ser un directorio--no puede ser una situación de URL.
Si usted está como mí, usted no podría tener acceso directo al directorio donde su sitio de Tejido se localiza. (El Webster Royland de TurboPower guarda acceso controlado bastante herméticamente.) Si ése es el caso, usted tendrá que especificar un directorio local en este campo y entonces el uso más tarde su Tejido que publica software para publicar los archivos a su sitio de Tejido.
El campo de URL Designado se usa para especificar la página donde el ActiveX residirá en el servidor. Esta página es usada por Delphi cuando crea la página de HTML que muestra el mando. Por ejemplo, el archivo de HTML que Delphi creó para mí se muestra Listando 15.4. (Yo tenía que romper un par de líneas porque ellos estaban a favor demasiado largos de la página.)
<HTML> <H1> Delphi 4 ActiveX Prueba Página </H1><p> Usted debe ver su Delphi 4 formas o mandos empotrado en la forma debajo. <HR><center><P> <El OBJETO classid = "clsid:52FB5B97-EDA3-11D1-B47B-0040052A81F8" codebase = "http://www.home.turbopower.com/~kentr/test/MyFormProj.cab #version=1,0,0,0" width=275 height=175 align=center hspace=0 vspace=0 > </OBJECT> </HTML>
Note el URL en la declaración del codebase. Éste es el camino yo tecleé en el campo de URL Designado de las Opciones de Despliegue de Tejido dialoge caja. A propósito, usted puede copiar la etiqueta del OBJETO entera del HTML Delphi-generado que codifica directamente a la fuente de HTML de su página de Tejido cuando usted consigue listo para desplegar su código de ActiveX oficialmente.
NOTA: El nombre del archivo de HTML creado por Delphi es el nombre del proyecto con una extensión de .htm.
El HTML dir campo de las Opciones de Despliegue de Tejido dialoga la caja se usa para especificar la situación donde Delphi pondrá que los HTML codifican genera (refiérase a Listar 15.4). Como con el campo del dir Designado, si usted no tiene acceso directo a los directorios de su sitio de Tejido, usted tendrá que especificar un directorio local y entonces publicar el HTML archiva a su sitio de Tejido.
Esta sección es donde usted especifica las opciones de despliegue de Tejido globales. El Uso TAXI archivo condensación campo determina si el ActiveX está comprimido. Comprimiendo el ActiveX reduce el tamaño de su ActiveX y hace transmitiendo tanto más rápidamente el mando. Yo usé condensación del TAXI en el ActiveForm creó antes en el proyecto y el tamaño de ActiveX fue de 312KB en OCX forme a 204KB en forma del TAXI. Windows cuida de descomprimir automáticamente y registrar el ActiveX, no hay ninguna desventaja real así que a usar condensación del TAXI.
El Incluya el número de versión de archivo indica si Delphi debe incluir el número de la versión en la declaración del codebase (de nuevo refiérase a Listar 15.4). La etiqueta de la versión es optativa, para que usted no lo necesita específicamente. Note, sin embargo, que algunos browsers no cargarán el ActiveX si la etiqueta de la versión está presente (Navegante de Netscape con un ActiveX tapón-en, por ejemplo).
El Automóvil incremento descargo número incrementará el número de la versión automáticamente en el el info de la versión de ActiveX cada tiempo el ActiveX se despliega.
La Código señal proyecto opción juega un papel importante en despliegue de ActiveX. Cuando esta opción es adelante, Delphi codificará señal el ActiveX. El código firmar es el proceso de atar una firma binaria a un archivo. Esta firma binaria identifica la compañía que creó el ActiveX, entre otra información.
El código firmar es importante que porque el Explorador de Internet espera que ActiveX controle para ser código firmado. Si el nivel de seguridad de Explorador de Internet se pone a Alto o Elemento, cualquier mando de ActiveX que no es ningún código firmado no cargará. Simplemente ponga, si usted va a desplegar su ActiveX controla para que el público pueda usarlos, ellos deben ser código firmado.
El Código que Firma página de las Opciones de Despliegue de Tejido dialoga la caja contiene la información necesitó codificar señal el ActiveX. Delphi no proporciona las credenciales archivan o la llave privada necesitó codificar archivos de la señal. Para obtener un archivo de las credenciales y la llave privada, usted necesitará avisar Microsoft. Para más información, investigue el Microsoft Tejido sitio para los términos "Firma Digital" y "Autoridad del Certificado."
El Despliegue paquetes requeridos y Despliegue adicional archiva se usan opciones si usted ha construido su ActiveX con runtime empaqueta o si hay archivos adicionales que deben enviar con su mando. Si usted escoge cualquiera de estas opciones, usted debe especificar los paquetes o los archivos adicionales en los Paquetes y las páginas de los Archivos Adicionales de las Opciones de Despliegue de Tejido dialoge caja.
NOTA: Cuando en duda, pulse el botón las Ayudas abrochan en las Opciones de Despliegue de Tejido dialoge caja. La ayuda de Delphi explica cada uno de las páginas de esta caja del diálogo.
Después de que usted puso las opciones del despliegue, usted está listo desplegar su ActiveX. Para desplegar el ActiveX, simplemente cargue los ActiveX proyectan y escogen Project|Web Deploy del Delphi el menú principal. Delphi construirá el ActiveX y desplegará basó en las escenas en las Opciones de Despliegue de Tejido dialoge caja. Si usted eligiera para usar condensación del TAXI, Delphi comprimirá el ActiveX también en un archivo del TAXI. Recuerde, si usted no tiene acceso directo a los directorios de su sitio de Tejido, usted tendrá que publicar el ActiveX y HTML archiva a su sitio de Tejido antes de que usted pueda probar el ActiveX.
El acto de desplegar el ActiveX es trivial--poniendo las opciones de despliegue de Tejido es la parte dura. Figure 15.10 muestras el ejemplo que ActiveForm creó corriendo antes en una página de Tejido.
FIGURE 15.10.La prueba ActiveForm que corre en una página de Tejido.
NOTA: Los mandos de ActiveX no tienen virtualmente ninguna restricción de seguridad. Tenga cuidado al transmitir mandos de ActiveX del desconocido (o unverified) las fuentes. Cuando transmitió, un mando de ActiveX tiene acceso a su sistema entero. Tenga igualmente cuidado al escribir sus propios mandos de ActiveX. Haga completamente efectivamente que su mando de ActiveX no hará nada que impactar las máquinas de otros usuarios negativamente.
Yo no quedaré a usted--hay mucho más a COM y ActiveX que lo que se presenta aquí. Por ejemplo, yo no hablé sobre OLE. OLE, como ActiveX, es un subconjunto de COM. OLE agrega una capa a COM permitir a las aplicaciones unirse y empotrar OLE automatización servidores en una aplicación del recipiente. Todavía, usted aprendió un gran trato sobre COM y ActiveX hoy. Pretenciosamente, usted averiguó cómo crear COM objeta, ActiveX controla, y ActiveForms. Usted también aprendió un pedazo sobre Tejido Despliegue y cómo usarlo para desplegar sus mandos de ActiveX en una página de Tejido.
El Taller contiene preguntas del examen para ayudarle a solidificar su comprensión del material cubierta y ejerce para proporcionarle la experiencia usando lo que usted ha aprendido. Usted puede encontrar las respuestas a las preguntas del examen en Apéndice UN, "las Respuestas a las Preguntas del Examen."
© Copyright, Macmillan Computadora Publicación. Todos los derechos reservaron.