2781_es-ES
Automatización de C #, apertura y cierre de la aplicación JMP.Hola a todos,
He tenido un gran éxito al usar C # para automatizar JMP, pero tengo un comportamiento inesperado al abrir y cerrar la aplicación JMP.
Abro JMP con:
Aplicación JMP.Application;
app = new JMP.Application ();
Esto funciona, pero si tengo una instancia de JMP abierta y en ejecución, la secuestrará. ¿Hay alguna forma de generar siempre una nueva aplicación?
Cierro con:
app.CloseAllWindows ();
app.Quit ();
Una vez más, esto cierra lo que abrí o secuestré. ¿Hay alguna manera de simplemente cerrar la que abrí? ¿Y si no abro ninguno, para no cerrar nada?
¡Gracias!
--Jeff
PS utilizando la versión 7 de JMP.
El mensaje fue editado por: vJeffRe: automatización de C #, problema de apertura y cierre de la aplicación JMPHola Jeff:
Yo también me pregunté acerca de este comportamiento, y después de pasar demasiado tiempo tratando de averiguar cómo
para hacer que funcionara se rindió y pidió ayuda a la buena gente de @ JMP Tech, quien, por supuesto, tenía la
contesta inmediatamente Se comporta de esa manera por diseño (es decir, como una sola sesión, uso múltiple
servidor de automatización), y es relativamente sencillo de cambiar al otro comportamiento si se desea (es decir,
uso único multisesión).
Me dirigieron a la respuesta aquí:
Nota de uso 11089: cómo habilitar JMP como servidor de un solo uso para la automatización
http://www.jmp.com/support/notes/11/089.html
"Tradicionalmente, JMP se ha ejecutado como un servidor de automatización de uso múltiple .... "
Es decir, como MS Powerpoint.
"... Para habilitar JMP como servidor de un solo usuario, modifique la clave de registro ... \ Multiple -> ... \ Single "
Es decir, como MS Word y Excel.
Ver también:
Comportamiento de GetObject y CreateObject de los servidores de automatización de Office
http://support.microsoft.com/kb/288902
Cómo obtener el identificador de ventana para un servidor de automatización de Office
http://support.microsoft.com/kb/258511
Código de ejemplo snipptet en TCL (muy similar a C #, Perl, Python, etc. elige tu herramienta de scripting favorita,
las llamadas a objetos COM son muy similares.)
Predeterminado \ Comportamiento múltiple
#################################
# cargar un paquete adicional en TCL para permitir un acceso fácil a las llamadas COM
# incluido en ActiveState TCL Distro http://www.activestate.com/activetcl/
# www.vex.net/~cthuang/tcom/
# wiki.tcl.tk/1821
paquete requiere tcom
# adjuntar a una sesión existente
set jmp3 [:: tcom :: ref getactiveobject "JMP.Application"];
# iniciar JMP (crea una nueva sesión JMP si no existe una ya existente). Si uno existe,
entonces se adhiere a ella. No podrá / no puede crear un segundo)
set jmp [:: tcom :: ref createobject "JMP.Application"];
$ jmp -método visible 1
Servidor de un solo uso para la automatización.
#################################
# fire up jmp (crea dos sesiones independientes, o una sola llamada crea una nueva sesión si existe)
set thing1 [:: tcom :: ref createobject "JMP.Application"];
set thing2 [:: tcom :: ref createobject "JMP.Application"];
$ thing1 -método visible 1
$ thing2 -método visible 1
# note las dos referencias de objeto separadas creadas, thing1 y thing2, se pueden controlar de forma independiente
Atentamente,
-Mate
Comments
There are no comments yet