--- In [email protected], "brucexs" <bswit...@...> wrote:
>
> --- In [email protected], "Sheri" <sherip99@> wrote:
> >
> > The below referenced autohotkey script creates some open space on an 
> > application's window below its menu (for a toolbar).  It also creates a 
> > toolbar.
> 
> 
> Someone once posted a link to an app that did this, and I had assumed the 
> only way to make the extra space stick was something like to hook the target 
> application's main window and add your own client window in the apps process 
> space, then somehow hook it and draw on top.
> 
> But how could an autokeyscript do that?
> 
> It turns out that it is much simpler. All the app does is get the
> menu handle of the menubar associated with the window and add a
> new row to that menu. Then it draws a tool bar on that. I was
> very surprised that this seems to work, at least in XP. Don't
> know about Vista and beyond.
> 
> To test it, I created a win plugin service
> win.addmenurow(handle)

This is cool Bruce, thanks!

> which adds a new (blank) row to that window with given window
> handle (must be a top level window, I suspect). The plugin
> normally returns 0, but if it has to create a new menu bar, it
> returns that menu handle (this resource will need to be freed if
> the underlying window goes, and the caller must do that)
> 
> If you want to experiment with this, I uploaded the win plugin to the 
> webeddie download folder.
> 
> http://powerpro.webeddie.com/download/win.dll
> 
> You could create a bar with subbars depending on the active
> window, and then move it to either just below the caption (if the
> target window had no menubar to start with) or otherwise to below
> that caption + menu bar height (available from
> win.getsystemmetrics(15));
> 
> As with the autokeyscript, you would have to use an event to
> reposition bar each time the active window changed. If you only
> want to affect certain windows, you'd have to keep a list of them
> somehow. You have to remember the handles of windows which
> already have extra row added. Finally, you should destroy any
> return hmenus if the window they are associated with is
> destroyed. Since you have to keep a list of affected windows, if
> you find handles on the list which are now invalid, then any
> associated hmenu created by the win plugin should be destroyed.
> 

So far, I just tested using a negative hoffset and positive voffset applied to 
left caption on a context bar that is autoshown. Simple and works fine! All the 
showing and unshowing is already in PowerPro. 

If a handle gets returned, what is the command to destroy it after the 
associated window is closed?

Is there any flexibility possible on the height of the added row?

Regards,
Sheri

Reply via email to