Ok I understand now.
The start menu is declarative, and has no option to check if WCI child programs are already started.
I see different solutions:
1) Instead of using a start menu, if there are not too much possible child programs, consider using a TOPMENU in the WCI container to start child programs with a real RUN "fglrun xxx", with a TOPMENU you have total control in the parent program (ON ACTION, disable actions)... Note that a TOPMENU can be build at runtime with the om.* interface.
2) Use the start menu, but in each child program, check that it is not yet started for the current user (ps, etc), but this tricky and OS/user dependant.
Maybe here we are missing a ui.Interface.getProgramInstances("prog_name"), to let each WCI child program check itself if it is not yet started (from a front-end point of view)
3) You could also write your own self-made start menu with a treeview. This may be a good opportunity to customize the way you want to start child programs.
4) Use the start menu, but instead of doing directly a "fglrun prog" command, use a shell script, to implement child program instance checking and refuse to start if it is already started for this user.. can give visual feedback by starting another program just showing message "This program is already started"...?
Maybe there are other solutions.
Seb