C # chiude JMP dopo l'esecuzioneSto provando a lanciare un addin (più alcune altre cose) con un semplice programma C #.
Funziona alla grande, il problema è. Se JMP non è già aperto, non appena è in esecuzione, esce da JMP. Non voglio davvero tenere la console aperta se non devo. C'è un comando che lascerà aperto dopo l'esecuzione?
Ri: C # chiude JMP dopo l'esecuzioneSe si utilizza "EnableInteractiveMode (True)" sull'oggetto dell'applicazione, verrà abilitata la voce di menu Exit e non sarà necessario terminare il processo tramite Task Manager.
Brian Corcoran
Sviluppo JMP
Ri: C # chiude JMP dopo l'esecuzioneHo fatto un po 'di test e sembra che il comportamento sia diverso se si utilizza un'applicazione Windows Form vs un'applicazione console. Suppongo che tu stia utilizzando un'applicazione console basata sul tuo OP. Il mio post precedente era basato sull'utilizzo di un'applicazione Windows Form.
Se si dispone di un'applicazione console, fare qualcosa come myJMP.ShowStartupWindow () dovrebbe impedire a JMP di chiudersi quando il programma termina l'esecuzione.
Questo metodo aprirà JMP e lo manterrà aperto al termine dell'esecuzione del programma.
static void Main(string[] args)
{
JMP.Application myJMP;
myJMP = new JMP.Application();
myJMP.Visible = true;
myJMP.ShowStartupWindow();
}
Tuttavia, c'è un problema con questo metodo. Dovrai uccidere jmp.exe in Task Manager perché la voce di menu Exit JMP è disabilitata. (In realtà, il codice precedente che ho fornito ha anche questo problema.)

MODIFICA 09 MAR 17 (Per le persone del futuro):
Mi sono reso conto che il mio commento originale (sopra o sotto, a seconda di dove stai leggendo questo) era corretto e le informazioni in questo post sopra questa modifica non funzionano tutto il tempo. Di seguito è riportato un trucco che mi è venuto in mente che crea una tabella fittizia e la chiude per far rimanere aperto JMP. Ho anche aggiunto @briancorcoran suggerimento per l'utilizzo di myJMP.EnableInteractiveMode (true) per abilitare la voce di 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
Ri: C # chiude JMP dopo l'esecuzioneBuono a sapersi. Posso dargli una variante fittizia?
Ri: C # chiude JMP dopo l'esecuzioneJMP si chiuderà se non si ha un riferimento a qualcosa oltre a JMP.Application.
Nell'esempio seguente, JMP rimarrà aperto perché ho un riferimento a una tabella di dati 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);
Ri: C # chiude JMP dopo l'esecuzioneHo appena provato l'esempio di automazione C # in JMP 13; ha lasciato in esecuzione JMP dopo aver chiuso l'esempio e l'IDE.
Apri l'app C #, quindi premi il pulsante per automatizzare JMP
Chiudi l'app C #, JMP rimane aperto
Immagino che questa sia una prova di esistenza che puoi fare quello che stai chiedendo, ma non sono sicuro di cosa lo faccia funzionare. Mi sono imbattuto in un commento sul rilascio di interfacce http://stackoverflow.com/questions/18154315/excel-process-not-closing per qualcuno che voleva il comportamento opposto.