>
> I also want it to switch to that folder and come to the front if
> another folder is open in DirOpus, whether hidden or minimized.
>
This is not easy.
What you need is some way to send information to a running program.
There are at least four ways to do it, but whether any one of them
will work in your case depends on your program.
1. Some programs have a "single instance only" option. Then, if you
try to run a second instance, the program is smart enough to take the
command line from that second instance and send the information to
the already-running instance. PowerPro works this way for running
commands from a command line. So does TextPad. Possibly your
program has sucn an option.
2. If not, the most reliable way is a COM automation interface. If
your program supports automation via COM, you could write a script
using the COM plugin. Consult the COM plugin documentation and your
program's documentation.
3. Another possibility is DDE. This is an old technology that MS
abandoned when it invented COM, but your program may still support
it. If so, you could use the DDE plugin. Again, you will need to
get the details from documentation of your program and the plugin.
4. Finally, it may be possible to do this by sending keystrokes to
your program. This is the least reliable way and may fail depending
on the level of activity on your system. Assuming there are a series
of keys strokes that switch your program to a folder, you would do a
script like the following
if (not anywindow("=yourprog")) do // program is not running
run with command line
quit script
endif
find window of your program //see note below
if window is minimized
show it using win plugin service
else
set it to foreground
wait for program to become foreground
send the keys that cause the program to switch to your folder.
There is one important point above relating to finding the right
window to unminimize and to make foreground before sending keys. As
you have learned, something like
win.show("=yourprog")
is not reliable. This is because "=yourprog" can match any window
created by yourprog. Many programs create hidden, off-screen, or
zero-sized windows for internal purposes, and it is possible for one
of these to be matched by =yourprog, leading to the type of behavior
you saw.
Instead, you need to find a unique way of identifying the main window
that your program displays for you to interact with. Possibly there
is something unique about the caption, e.g. it may always start
with "yourprog -". Or there it may have a special window class. You
can use the exec windowinfo command to look at window classes. Or
you can write a script that uses handlelist("=yourprog") to get all
of the handles of the program, and then display the class and caption
of each.
BTW, the =yourprog is the write matcher to use with anywindow
function to see if a program is running, since you do want to match
any window from that program.