C # ferme JMP après avoir exécutéJ'essaie de lancer un complément (plus quelques autres choses) avec un simple programme C #.
Cela fonctionne très bien, le problème étant. Si JMP n'est pas déjà ouvert, dès qu'il est terminé, JMP se ferme. Je ne veux pas vraiment garder la console ouverte si je ne suis pas obligé. Existe-t-il une commande qui la laissera simplement ouverte après exécution?
Re: C # ferme JMP après avoir exécutéSi vous utilisez "EnableInteractiveMode (True)" sur l'objet d'application, cela active l'élément de menu Quitter et vous n'avez pas besoin de tuer le processus via le gestionnaire de tâches.
Brian Corcoran
Développement JMP
Re: C # ferme JMP après avoir exécutéJ'ai fait quelques tests supplémentaires et il semble que le comportement soit différent si vous utilisez une application Windows Forms par rapport à une application console. Je suppose que vous utilisez une application console basée sur votre OP. Mon précédent article était basé sur l'utilisation d'une application Windows Forms.
Si vous avez une application console, une opération telle que myJMP.ShowStartupWindow () devrait empêcher la fermeture de JMP à la fin de l'exécution du programme.
Cette méthode ouvrira JMP et la gardera ouverte une fois l'exécution du programme terminée.
static void Main(string[] args)
{
JMP.Application myJMP;
myJMP = new JMP.Application();
myJMP.Visible = true;
myJMP.ShowStartupWindow();
}
Cependant, il y a un problème avec cette méthode. Vous devrez supprimer le fichier jmp.exe dans le Gestionnaire des tâches car l'élément de menu Quitter JMP est désactivé. (En fait, le code précédent que j'ai fourni a également ce problème.)

EDIT 09MAR17 (Pour les gens du futur):
J'ai réalisé que mon commentaire original (ci-dessus ou ci-dessous, en fonction de l'endroit où vous lisiez ceci) était correct et que les informations de ce post ci-dessus ne fonctionnaient pas tout le temps. Vous trouverez ci-dessous une solution de contournement qui crée une table factice et la ferme pour que JMP reste ouvert. J'ai aussi ajouté @briancorcoran Il est suggéré d'utiliser myJMP.EnableInteractiveMode (true) pour activer l'élément de menu 'Exit JMP'.
static void Main(string[] args)
{
JMP.Application myJMP;
myJMP = new JMP.Application();
myJMP.Visible = true;
myJMP.ShowStartupWindow();
myJMP.EnableInteractiveMode(true);
// Needed to keep JMP from automatically closing
JMP.DataTable dt = myJMP.NewDataTable("test");
myJMP.RunCommand(@Close(Data Table("test""), NoSave)");
}
@vince_faller , FYI
Re: C # ferme JMP après avoir exécutéBon à savoir. Puis-je lui donner un var factice?
Re: C # ferme JMP après avoir exécutéJMP se fermera si vous n'avez pas de référence à autre chose que JMP.Application.
Dans l'exemple ci-dessous, JMP restera ouvert car j'ai une référence à une table de données JMP.
JMP.Application myJMP;
JMP.DataTable dt;
myJMP = new JMP.Application();
myJMP.Activate();
myJMP.Visible = true;
myJMP.ShowStartupWindow();
myJMP.RunCommand(@Open("$SAMPLE_DATA\Big Class.jmp"")");
dt = myJMP.GetTableHandleFromIndex(1);
Re: C # ferme JMP après avoir exécutéJe viens d'essayer l'exemple d'automatisation C # dans JMP 13; JMP a fonctionné après la fermeture de l'exemple et de l'EDI.
Ouvrez l'application C #, puis appuyez sur le bouton pour automatiser JMP.
Fermez l'application C #, JMP reste ouvert.
Je suppose que c'est une preuve de l'existence que vous pouvez faire ce que vous demandez, mais je ne suis pas sûr de ce qui fait que ça fonctionne. J'ai rencontré un commentaire sur la libération des interfaces http://stackoverflow.com/questions/18154315/excel-process-not-closing pour quelqu'un qui voulait le comportement opposé.