> 
> 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.




Reply via email to