the script algorithm is: *take the window name if (the window name exists but not active) *bring the first window that matches the name else if (the window name exists and active) if (only one window with the same name exists) *bring back preview window else *bring the next window that matches the name else if (the window name doesn't exist) *execute the program
============================================================== It seems an easy task to do. But if taking a closer look, we'll find that window.backshow();win.back() all broken. All we can count on is win.show(). Below is the script. the usage: take an example: set hot key ctrl+alt+a to execute .bringup_prog("=acrobat,&,*Adobe Acrobat Professional", "d:\\program files\\Adobe\\Acrobat 8.0\\Acrobat\\acrobat.exe") ============================================================== bringup_win.powerpro: ============================================================== local prog_name =arg(1) local hlist = win.handlelist(prog_name) local prog_path = arg(2) local listnum=0 local handle=0 static pos, preforewin ;win.debug("hlist: "++hlist++" ;"++"preforewin: "++preforewin) if(hlist != "") do local hforewin = window("firstwindow", "active") for (listnum=1; ;listnum=listnum+1) handle = word(hlist,listnum) if (handle == "") do listnum = listnum-1 break endif endfor ;win.debug("pos: "++pos++" ;"++"listnum: "++listnum) if(hforewin!=word(hlist,1))do ;win.debug("not active") preforewin = hforewin pos=1 win.show(word(hlist,1),1) else ;win.debug("active") if(listnum==1) do win.show(preforewin) else if(pos+1>listnum) do win.show(word(hlist,listnum),1) ;win.debug("list end") else win.show(word(hlist,pos+1),1) ;win.debug("next") endif pos=pos+1 endif endif else do(prog_path, "", "", "") endIf