Hi Karen, thank you for your contribution. It is really helpful for me.
I have a question: Can it be that PowerPro ignores ConsoleWindows? I'd like to make PP set a console window topmost whenever one opens but PP doesnt get a notification when a console window opens. Or do I missed something? Cheers, Mark --- In [email protected], miinx <[EMAIL PROTECTED]> wrote: > > Howdy list, > > As mentioned, some tips for using HookWindowEvents. These are not > actually my tips, but things from the archives & the PowerPro Help manual. > > > == 1. ====================== > The first is from Ted Wall -- and it is a godsend for when you are > working on a hook script, enabling you to easily stop the script should > get stuck in an error loop, as well as see what values the args are > taking on for each window event. > > Ted's original message is here: > http://article.gmane.org/gmane.comp.windows.power-pro/16503 > > Stick the following at the start of your hook script: > ;---------- > if (not bHookOn) do > quit > elseif (bHookOn==2) > win.debug( ;;+ > "arg(1)="++arg(1), ;;+ > "arg(2)="++arg(2), ;;+ > "arg(3)="++arg(3), ;;+ > "arg(4)="++arg(4)) > quit > endif > ;---------- > > Then create a hotkey (I use Win+space) with the following as the command: > bHookOn=ifelse(bHookOn==0,1,ifelse(bHookOn==1,2,0)) > > And finally, set a Scheduler event for Start up to run the following: > global bHookOn = 1 > > Now, you can cycle through 3 bHookOn states, where if: > bHookOn=1, your hook script will be called for each window event > bHookOn=2, arg values will be output to the debugger & > hook script is not run > bHookOn=0, hooks are off > > > > == 2. ====================== > Make use of the "Quit" statement throughout your script, so that > PowerPro doesn't continue processing it after your window event has been > processed. Place a Quit statement at the end of each section, before > the "endif". > > e.g. (from my own hook script) > > ;-- -- -- -- -- -- -- -- -- -- -- -- > ; Check for ashQuick closing & if xplorer2's > ; console2 is open, close that too > ;-- -- - -- -- -- -- -- -- -- -- -- > if (arg(1)==4 && arg(4)=="avast! Quick Scanner") do > window.close_("console*") > quit > endif > > ;-- -- - -- -- -- -- -- -- -- -- -- > ; an empty example of another section > ;-- -- - -- -- -- -- -- -- -- -- -- > if (arg(1)==3 && arg(4)=="*Firefox") do > ; do stuff > quit > endif > > Notice the "quit" 's before the close of each "section" there. > > > > == 3. ====================== > Once you've saved your hook script, create a PowerPro note with the > following information: > > ---------------------- > FileHook(arg(1), arg(2), arg(3), arg(4)) > ---------------------- > THE ARGUMENTS > arg(1) - integer event number from below > arg(2) - the window handle > arg(3) - the window class > arg(4) - the window caption > arbitrary when window first created: arg(1) = 3 > > ---------------------- > ARG(1) VALUES > 0 = A moving or sizing operation is completed using the GUI > 1 = A window is maximized or restored to normal using the GUI > 2 = A window is minimized using the GUI. > 3 = A new window is created. > 4 = A window is destroyed. > 5 = A window is activated (i.e. given focus) > ---------------------- > > Set the category of the note to "!captionlist" where captionlist matches > your hook script file when you're editing it. Use a + instead of an * > for the caption wildcard. > > So, mine is: "!+FileHook.powerpro - metapad" which has a wildcard in > 2nd spot there to cover times when I'm actually editing the file & > metapad puts an asterisk in the window caption to indicate such. > > Now, whenever you open your hook script, PowerPro will open your helper > note, too. > > See "PowerPro Help CHM > Built-in Commands > *Note > *Note Command > > Showing Notes when specified programs or documents are active" for more > info on this great PowerPro feature. > > > > == 4. ====================== > Ok, this last one actually is my own tip. Not a great tip, but a tip, > nonetheless. > > I like to grab the window's exe name at each event for use in subsequent > arg() comparisons, so I define a global variable, exe, at PowerPro > startup that I then set each time my hook script is called, with the > following line at the start: > > exe = win.exename(arg(2)) > > I also include that in my debug output from Ted's script in tip 1, too. > > > > And that's it! Hope they help someone. :) > > Cheers > Karen >
