Many thanks Michael. That works perfectly :-)

Regards, Alan.

On Wed, 18 Feb 2026 at 14:00, Michael Schmid <[email protected]>
wrote:

> Hi Alan,
>
> you can use this (before exec):
>    setOption("WaitForCompletion", false);
> to immediately continue the macro after exec, without waiting.
>
> https://imagej.net/ij/developer/macro/functions.html#setOption
>
> Michael
> ________________________________________________________________
> On 18.02.26 13:52, Alan Hewat wrote:
> > Thanks again Fred. I can now launch my application from an imageJ macro
> > with a buld.bat file using
> > *exec("cmd /c start \"cmdWindow\" build.bat");*
> >
> > *But now my macro script waits for my application and cmdWindow to close
> > before continuing.*
> >
> > How can I launch my application with exec(...) and immediately continue
> > with my macro script without waiting ?
> >
> > Alan.
> >
> >
> > On Tue, 10 Feb 2026 at 22:23, Fred Damen <[email protected]> wrote:
> >
> >> To be pedantic... The strings(s) that you are passing to be executed may
> >> (are) not the parameters that are actually received (argv) by the
> program
> >> that actually gets executed: executing 'echo' as the executable will
> show
> >> you what actually made it to the executable program.
> >>
> >> Enjoy,
> >>
> >> Fred
> >>
> >> On Tue, February 10, 2026 3:23 am, Alan Hewat wrote:
> >>> *Thanks Rob.* Yes, the backslash \ is a character that escapes the
> >>> following character. I used backslashes historically  but will try
> >> forward
> >>> slashes with my current modern installation.
> >>>
> >>> *Fred, that's brilliant !!!!!!*
> >>> exec("cmd /c start \"\" build.bat");
> >>> Solves my problem ! I had already tried that, but without the double ""
> >>> (escaped) which opens a new *persistent *untitled cmd window. My
> previous
> >>> attempt, based on the examples in
> >>> https://wsr.imagej.net/macros/ExecExamples.txt also opened a new cmd
> >>> window
> >>> but closed it immediately, and perhaps that was the problem. I use
> >> print()
> >>> to check the strings I pass to exec().
> >>>
> >>> *Now, to be tidy, I just need to close that cmd window, after perhaps
> >>> waiting a moment. *But I'm very happy that I can finally launch
> SharpCap
> >>> with Python scripting from an imageJ script.
> >>>
> >>> Thanks also for the explanation of how exec() works. It was probably
> >> quite
> >>> difficult to implement, having to pass parameters through several
> >> systems.
> >>> It's perhaps still not quite perfect, which to my mind would mean that
> >>> anything that worked in a Windows cmd shell or .bat file worked in
> exec,
> >>> and that exec itself would parse the string. At least, the stated
> exec()
> >>> requirement to use comma separated arguments when there are spaces in
> the
> >>> cmd string, like
> >>> exec("cmd", "/c", "start", "excel.exe", path);
> >>> no longer seems necessary.
> >>>
> >>> Thanks again to all who responded, suggested new ideas, and solved my
> >>> problem. Alan.
> >>>
> >>> On Tue, 10 Feb 2026 at 06:26, Fred Damen <[email protected]> wrote:
> >>>
> >>>> Greetings,
> >>>>
> >>>> A slightly more complicated explanation...
> >>>>
> >>>> ImageJ's macro function exec passes its parameters to JVM, which
> passes
> >>>> its parameters to posix system call, which requests the OS to execute
> an
> >>>> executable. At each stage things are manipulated. System shell
> commands
> >>>> are not actually executables. You need to pass your shell command
> (.bat)
> >>>> to an executable (cmd) to execute it.
> >>>> exec("cmd /c start \"\" build.bat");
> >>>> see:
> >>>>
> >>>>
> >>
> https://stackoverflow.com/questions/615948/how-do-i-run-a-batch-file-from-my-java-application
> >>>> second answer.
> >>>>
> >>>> If you want to try and figure out what is going on and resolve the
> >>>> issue,
> >>>> try and execute the 'echo' command with your command as its
> parameters;
> >>>> echo simply displays its parameters.  This will be frustrating and
> >>>> enlightening, although it may help...
> >>>>
> >>>>
> >>>> Fred
> >>>>
> >>>> On Mon, February 9, 2026 9:50 am, Alan Hewat wrote:
> >>>>> Thanks Fred.
> >>>>>
> >>>>> Unfortunately *ImageJ exec() doesn't run Windows .bat files as
> >>>> expected
> >>>>> either :-(*
> >>>>>
> >>>>> I have a simple .bat file containing one line, that *executes without
> >>>>> error
> >>>>> when I double-click it in Windows*
> >>>>> "C:\Program Files\SharpCap 4.1 (64 bit)\SharpCap.exe" /language=fr
> >>>>> It launches SharpCap <https://docs.sharpcap.co.uk/4.1/>, a popular
> >>>> imaging
> >>>>> application for astronomers, with a command-line argument that
> >>>> specifies
> >>>>> the language
> >>>>>
> >>>>> If instead I execute it within an imageJ script with
> >>>>> status = exec("C:\Program Files\SharpCap 4.1 (64 bit)\SharpCap.exe"
> >>>>> /language=fr);
> >>>>> It launches SharpCap but the in-line argument disables SharpCap's own
> >>>>> IronPython script with a "codepage___0"  error.
> >>>>> (It does work without the in-line argument, and I want to input more
> >>>>> complicated arguments than the trivial /language).
> >>>>>
> >>>>> Other users have reported similar problems and it was suggested
> >>>>> <https://forums.sharpcap.co.uk/viewtopic.php?t=6762>that the code
> >> page
> >>>> or
> >>>>> environment variables may be set differently.
> >>>>> This problem occurs however I try to execute SharpCap with exec(),
> >>>> e.g.
> >>>>> https://wsr.imagej.net/macros/ExecExamples.txt
> >>>>> There is a nice example
> >>>>> <https://imagej.net/ij/macros/tools/VideoCaptureTool.txt> of using
> >>>> exec()
> >>>>> with command-line arguments to record and playback VirtualDub video
> >>>>> That works for me, but doesn't help me understand my problem.
> >>>>>
> >>>>> *So is there any other way of launching a Windows process from an
> >>>> imageJ
> >>>>> macro other than exec() ?*
> >>>>>
> >>>>> Regards, Alan.
> >>>>>
> >>>>> On Mon, 9 Feb 2026 at 05:45, Fred Damen <[email protected]> wrote:
> >>>>>
> >>>>>> Greetings,
> >>>>>>
> >>>>>> Generally when I need to run a command line program from within a
> >>>>>> program
> >>>>>> I am writing and the passing of arguments becomes to frustrating (as
> >>>>>> there
> >>>>>> are many layers of retranslating the command syntax), I write a
> >>>> command
> >>>>>> line command in the OS(es) native macro language, .bat/.cmd in your
> >>>>>> case.
> >>>>>> Then the only thing that I need to get correct in the calling
> program
> >>>> is
> >>>>>> executing the OS macro command itself - which you seem to have
> >>>>>> accomplished.
> >>>>>>
> >>>>>> Enjoy,
> >>>>>>
> >>>>>> Fred
> >>>>>>
> >>>>>>
> >>>>>> On Sun, February 8, 2026 3:22 am, Alan Hewat wrote:
> >>>>>>> SharpCap <https://docs.sharpcap.co.uk/4.1/> is a popular
> >>>> astronomical
> >>>>>>> imaging application and can be launched from a Windows cmd shell
> >>>> with
> >>>>>>> a command-line
> >>>>>>> argument
> >>>>>> <https://docs.sharpcap.co.uk/4.0/34_CommandLineArguments.htm>,
> >>>>>>> like this:
> >>>>>>> C:\Users\alanh>"..\\..\\Program Files\\SharpCap 4.1 (64
> >>>>>>> bit)\\SharpCap.exe"
> >>>>>>> /runscript d:\\cameraList.py
> >>>>>>> This correctly launches SharpCap to run a Python script
> >>>> cameraList.py
> >>>>>> to
> >>>>>>> list available cameras (or whatever else is requested).
> >>>>>>>
> >>>>>>> ImageJ has an exec() function
> >>>>>>> <https://wsr.imagej.net/developer/macro/functions.html#E> that can
> >>>> be
> >>>>>> used
> >>>>>>> to launch applications from an imageJ script. The following
> >>>> launches
> >>>>>>> SharpCap, but apparently doesn't pass the /runscript argument
> >>>>>> correctly
> >>>>>>> because SharpCap scripting reports an error and doesn't work.
> >>>>>>> SharpCap = getDirectory("startup")+"..\\..\\Program Files\\SharpCap
> >>>>>> 4.1
> >>>>>>> (64
> >>>>>>> bit)\\SharpCap.exe";
> >>>>>>> status=exec (SharpCap+" /runscript d:\\cameraList.py");
> >>>>>>>
> >>>>>>> Guided by the exec() function
> >>>>>>> <https://imagej.net/ij/macros/ExecExamples.txt> examples, I tried
> >>>>>> instead:
> >>>>>>> status=exec("cmd", "/c", "start", SharpCap, " /runscript", "
> >>>>>>> d:\\cameraList.py" );
> >>>>>>> but an error that "*Windows can't find /runscript*" is returned as
> >>>> if
> >>>>>> it
> >>>>>>> thinks */runscript* is an application.
> >>>>>>> Replacing */runscript* with the application *SharpCap* as below
> >>>> works,
> >>>>>> but
> >>>>>>> I don't understand why
> >>>>>>> status=exec("cmd", "/c", "start", SharpCap, SharpCap, "
> >>>> /runscript", "
> >>>>>>> d:\\cameraList.py" );
> >>>>>>> That launches SharpCap, and no error is reported, but the script is
> >>>>>> not
> >>>>>>> executed.
> >>>>>>>
> >>>>>>> *The last attempt seems to be close to working, but I must have
> >>>> made
> >>>>>> some
> >>>>>>> mistake in the exec() syntax.*
> >>>>>>>
> >>>>>>> The latest versions of imageJ and Win-11 were used. Any suggestions
> >>>>>> would
> >>>>>>> be appreciated. Alan.
> >>>>>>>
> >>>>>>>
> >>>>>>> --
> >>>>>>> *_______________________________*
> >>>>>>> Dr Alan Hewat, NeutronOptics
> >>>>>>> Grenoble, FRANCE (from computer)
> >>>>>>> [email protected]
> >>>>>>> +33.476984168 VAT:FR79499450856
> >>>>>>> http://NeutronOptics.com/hewat <http://neutronoptics.com/hewat>
> >>>>>>> _______________________________
> >>>>>>>
> >>>>>>> --
> >>>>>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >>>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >>>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> *_______________________________*
> >>>>> Dr Alan Hewat, NeutronOptics
> >>>>> Grenoble, FRANCE (from computer)
> >>>>> [email protected]
> >>>>> +33.476984168 VAT:FR79499450856
> >>>>> http://NeutronOptics.com/hewat <http://neutronoptics.com/hewat>
> >>>>> _______________________________
> >>>>>
> >>>>> --
> >>>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >>>>>
> >>>>
> >>>> --
> >>>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >>>>
> >>>
> >>>
> >>> --
> >>> *_______________________________*
> >>> Dr Alan Hewat, NeutronOptics
> >>> Grenoble, FRANCE (from computer)
> >>> [email protected]
> >>> +33.476984168 VAT:FR79499450856
> >>> http://NeutronOptics.com/hewat <http://neutronoptics.com/hewat>
> >>> _______________________________
> >>>
> >>> --
> >>> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >>>
> >>
> >> --
> >> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
> >>
> >
> >
>
> --
> ImageJ mailing list: http://imagej.nih.gov/ij/list.html
>


-- 
*_______________________________*
Dr Alan Hewat, NeutronOptics
Grenoble, FRANCE (from computer)
[email protected]
+33.476984168 VAT:FR79499450856
http://NeutronOptics.com/hewat <http://neutronoptics.com/hewat>
_______________________________

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html

Reply via email to