Problema
Se devi aprire un file in un programma esterno, in genere la funzione JSL Open() funzionerà per te. Tuttavia, se desideri aprire un tipo di file che JMP sa come importare, probabilmente ti ritroverai con il file importato anziché aperto nel programma esterno. L'apertura di un file Excel è un caso d'uso comune per questo.
Soluzione
Per fare ciò, possiamo usare la funzione JSL RunProgram(). Windows richiede una gestione speciale in modo che JMP non venga bloccato fino alla chiusura del programma, né il processo debba essere chiuso prima della chiusura di JMP.
/* Function: openFileInOSDefault
Open file in the operating system default program
Arguments:
filepath - local path file
*/
openFileInOSDefault = Function({filepath},
If( Host is( "Windows" ),
Run Program(
Executable( "PowerShell.exe" ),
Options(
Eval Insert( "\[-Command "& {Start-Process '^filepath^'}"]\" )
),
Read function( "text" )
);
,
RunProgram(
Executable( "/usr/bin/open" ),
Options( filepath ),
ReadFunction( "text" )
)
);
);
Discussione
In generale, non penso che tu debba capire come funziona esattamente e puoi collegarlo ai tuoi script e chiamarlo con un percorso al file che desideri aprire.