Main Content

Crear objetos COM

Creación del proceso del servidor: una descripción general

software proporciona dos funciones para crear un objeto COM:MATLAB®

  • : Crea unactxcontrol Microsoft®ActiveX® control en una ventana de figura.MATLAB

  • : Crea un servidor en proceso para un componente de biblioteca de vínculos dinámicos (DLL) o un servidor fuera de proceso para un componente ejecutable (EXE).actxserver

En el siguiente diagrama se muestran los pasos básicos para crear el proceso de servidor. Para obtener más información sobre cómo el software establece interfaces para el objeto COM resultante, consulte.MATLABInterfaces de objetos COM

Crear un controlActiveX

Puede crear una instancia de un control desde el cliente mediante una interfaz de usuario () o la función desde la línea de comandos.ActiveXMATLABactxcontrolselectactxcontrol Cualquiera de estos métodos crea una instancia del control en el proceso de cliente y devuelve un identificador a la interfaz principal para el objeto COM.MATLAB A través de esta interfaz, puede acceder a las propiedades o métodos públicos del objeto. También puede establecer más interfaces para el objeto, incluidas las interfaces que utilizan IDispatch.

En esta sección se describe cómo crear una instancia del control y cómo posicionarla en la ventana de la figura.MATLAB

Listado de controles instalados

La función muestra qué controles COM están instalados actualmente en el sistema.actxcontrollist Tipo:

list = actxcontrollist

muestra una matriz de celdas que enumera cada control, incluido su nombre, identificador de programación (ProgID) y nombre de archivo.MATLAB

Este ejemplo muestra información para varios controles (los resultados pueden ser diferentes):

list = actxcontrollist; s = sprintf(' Name = %s\n ProgID = %s\n File = %s\n', list{114:115,:})

Muestra:MATLAB

s =   Name = OleInstall Class  ProgID = Outlook Express Mime Editor  File = OlePrn.OleInstall.1  Name = OutlookExpress.MimeEdit.1  ProgID = C:\WINNT\System32\oleprn.dll  File = C:\WINNT\System32\inetcomm.dll

Encontrar un control determinado

Si conoce el nombre de un control, puede mostrar su ProgID y la ruta de acceso de la carpeta que lo contiene. Por ejemplo, algunos de los ejemplos de esta documentación usan el control.Mwsamp2 Puede encontrarlo con el siguiente código:

list = actxcontrollist; for ii = 1:length(list)    if ~isempty(strfind([list{ii,:}],'Mwsamp2'))        s = sprintf(' Name = %s\n ProgID = %s\n File = %s\n', ...              list{ii,:})    end end
s =     Name = Mwsamp2 Control    ProgID = MWSAMP.MwsampCtrl.2    File =    D:\Apps\MATLAB\R2006a\toolbox\matlab\winfun\win32\mwsamp2.ocx

La ubicación de este archivo depende de la instalación.MATLAB

Crear objetos de control mediante una interfaz de usuario

El uso de la función es la forma más sencilla de crear una instancia de un objeto de control.actxcontrolselect Esta función muestra todos los controles instalados en el sistema. Cuando selecciona un elemento de la lista y hace clic en el botón, crea el control y le devuelve un identificador.CreateMATLAB Tipo:

h = actxcontrolselect

muestra el cuadro de diálogo.MATLABSelect an ActiveX Control La interfaz tiene un panel de selección a la izquierda y un panel a la derecha.ActiveX Control ListPreview Para ver una vista previa del control, haga clic en uno de los nombres de control en el panel de selección. (Un panel de vista previa en blanco significa que el control no tiene una vista previa.) Si no puede crear la instancia, aparece un mensaje de error en el panel de vista previa.MATLAB

Establecer propiedades conactxcontrolselect.  Para cambiar los valores de propiedad al crear el control, haga clic en el botón del panel.PropertiesPreview Puede seleccionar la ventana de la figura para colocar el control en (campo), dónde colocarlo en la ventana (y los campos), y qué tamaño para hacer el control (y).ParentXYWidthHeight

Puede registrar los eventos a los que desea que responda el control en esta ventana. Escriba el nombre de la rutina a la derecha del evento bajo.Event Handler

Puede seleccionar rutinas de devolución de llamada haciendo clic en un nombre en la columna y, a continuación, haciendo clic en el botón.EventBrowse Para asignar una rutina de devolución de llamada a más de un evento, primero presione la tecla y haga clic en nombres de eventos individuales.Ctrl También puede arrastrar el mouse sobre los nombres de eventos consecutivos y, a continuación, hacer clic para seleccionar la rutina de devolución de llamada.Browse

solo responde a los eventos registrados, por lo que si no especifica una devolución de llamada, se omite el evento.MATLAB

Por ejemplo, en el panel, seleccione (la versión del sistema puede ser diferente) y haga clic en. muestra el cuadro de diálogo elegir parámetro de creación de controles ActiveX.ActiveX Control ListCalendar Control 10.0PropertiesMATLAB Para cambiar el tamaño predeterminado del control, escriba una de y una de.Width500Height350 Para crear una instancia del control Calendar, haga clic en esta ventana y haga clic en la siguiente ventana.OKCreate

También puede establecer parámetros de control mediante la función.actxcontrol Un parámetro que se puede establecer con, pero no con, es el nombre de un archivo de inicialización.actxcontrolactxcontrolselect Al especificar este nombre de archivo, establece el estado inicial del control en el de un control guardado anteriormente.MATLAB

Información devuelta poractxcontrolselect.  La función crea un objeto que es una instancia de la clase COM.actxcontrolselectMATLAB La función devuelve hasta dos argumentos: un identificador para el objeto y una matriz a-por-celda, que contiene información sobre el control.h13info Para obtener esta información, escriba:

[h, info] = actxcontrolselect

La matriz de celdas muestra el nombre, ProgID y el nombre de archivo para el control.info

Si selecciona el control de calendario y, a continuación, haga clic en, muestra información como:CreateMATLAB

h =    COM.mscal.calendar.7 info =      [1x20 char]    'MSCAL.Calendar.7'    [1x41 char]

Para expandir la matriz de celdas, escriba:info

info{:} 

Muestra:MATLAB

ans =    Calendar Control 9.0 ans =    MSCAL.Calendar.7 ans =    D:\Applications\MSOffice\Office\MSCAL.OCX

Creación de objetos de control desde la línea de comandos

Si ya sabe qué control desea y conoce su ProgID, utilice la función para crear una instancia del control.actxcontrol

El ProgID es la única entrada necesaria para esta función. Además, puede seleccionar la ventana de la figura en la que colocar el control, dónde colocarlo en la ventana y el tamaño para hacerlo. También puede registrar los eventos a los que desea que responda el control o establecer el estado inicial del control mediante la lectura de ese estado desde un archivo. Consulte la página de referencia para obtener una explicación completa de sus argumentos de entrada.actxcontrol

La función devuelve un identificador a la interfaz principal para el objeto.actxcontrol Utilice este identificador para hacer referencia al objeto en otras llamadas a funciones COM. También puede utilizar el manejador para obtener más interfaces al objeto. Para obtener más información sobre el uso de interfaces, consulte.Interfaces de objetos COM

Reposicionar el control en una ventana de figura

Después de crear un control, puede cambiar su forma y posición en la ventana con la función.move

Observe lo que sucede con el objeto creado en la última sección al especificar las nuevas coordenadas de origen (,) y las nuevas cotas de anchura y altura de y:70120400350

move(h,[70 120 400 350]);

Limitaciones para apoyarActiveX

Un contenedor de control COM no activa controles en el lugar hasta que estén visibles.MATLABActiveX

Creación de un servidor COM

Creación de instancias de un componente DLL

Para crear un servidor para un componente implementado como una biblioteca de vínculos dinámicos (DLL), utilice la función. crea una instancia del componente en el mismo proceso que contiene la aplicación cliente.actxserverMATLAB

La sintaxis para, cuando se utiliza con un componente DLL, es, donde es el identificador de programación para el componente.actxserveractxserver(ProgID)ProgID

Devuelve un identificador a la interfaz principal para el objeto.actxserver Utilice este identificador para hacer referencia al objeto en otras llamadas a funciones COM. También puede utilizar el manejador para obtener más interfaces al objeto. Para obtener más información sobre el uso de interfaces, consulte.Interfaces de objetos COM

Desemejante MicrosoftActiveX controles, cualquier interfaz de usuario mostrada por el servidor aparece en una ventana independiente.

No puede utilizar un objeto COM de DLL en proceso de 32 bits en una aplicación de 64 bits.MATLAB Para obtener información acerca de esta restricción, consulte.https://www.mathworks.com/matlabcentral/answers/95116-why-am-i-not-able-to-use-32-bit-dll-com-objects-in-64-bit-matlab

Crear una instancia de un componente EXE

Puede utilizar la función para crear un servidor para un componente implementado como ejecutable (EXE).actxserver En este caso, crea una instancia del componente en un servidor fuera de proceso.MATLAB

La sintaxis para crear un ejecutable es. es el identificador de programación para el componente y es un argumento opcional utilizado en la configuración de un sistema COM distribuido (DCOM).actxserveractxserver(ProgID, sysname)ProgIDsysname

Devuelve un identificador a la interfaz principal para el objeto COM.actxserver Utilice este identificador para hacer referencia al objeto en otras llamadas a funciones COM. También puede utilizar el manejador para obtener más interfaces al objeto. Para obtener más información sobre el uso de interfaces, consulte.Interfaces de objetos COM

Cualquier interfaz de usuario mostrada por el servidor aparece en una ventana separada.

En este ejemplo se crea una aplicación de servidor COM que ejecuta el MicrosoftExcel® Programa de hoja de cálculo. El manejador está asignado a.h

h = actxserver('Excel.Application') 

Muestra:MATLAB

h =     COM.excel.application

puede conectarse mediante programación a una instancia de una aplicación de servidor de automatización COM que ya se está ejecutando en el equipo.MATLAB Para obtener una referencia a dicha aplicación, utilice la función.actxGetRunningServer

En este ejemplo se obtiene una referencia al programa, que ya debe estar ejecutándose en el sistema.Excel Se asigna el identificador devuelto.h

h = actxGetRunningServer('Excel.Application') 

Muestra:MATLAB

h =     COM.excel.application

Consulte también

| |