[jawsscripts] Re: Searching menu structures for a particular menu item

  • From: "Geoff Chapman" <gch@xxxxxxxxxxxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Sun, 28 Dec 2008 12:58:32 +1100

Ok Victor, I'll bite.  How, does one Catch/watch for wm_command messages
whilst executing menu commands, in order to obtain these magic resource
ID's, of which you speak so confidently. <grin.>
geoff c.
----- Original Message ----- 
From: "Victor Tsaran" <vtsaran@xxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Wednesday, December 24, 2008 1:02 PM
Subject: [jawsscripts] Re: Searching menu structures for a particular menu
item


> You could also access menu items if you know a particular item's
> resource ID. You can catch these IDs by either watching for WM_COMMAND
> messages when executing menu items of interest or by hooking directly
> into resource table through whatever tools, like resource hacker.
>
> Bryan Garaventa wrote:
> > This is copied from one of my prior scripts.
> >
> > SpeechOff ()
> >
> > var object o, int cid,
> >
> > string stv, handle gw
> >
> > {alt+o}
> >
> > Pause ()
> >
> > let o = GetObjectAtPoint (cid, GetCursorCol (), GetCursorRow ())
> >
> > o.accDoDefaultAction(6)
> >
> > Pause ()
> >
> > ; ... script continues with SpeachOn(), etc.
> >
> >
> > The only way I was able to make this work, was by first manually
activating
> > the menu, so Doug is right, I believe it does have to be visible first.
> >
> >
> > ----- Original Message ----- 
> > From: "Doug Lee" <doug.lee@xxxxxxxxxxxxxxxx>
> > To: <jawsscripts@xxxxxxxxxxxxx>
> > Sent: Tuesday, December 23, 2008 1:05 PM
> > Subject: [jawsscripts] Re: Searching menu structures for a particular
menu
> > item
> >
> >
> >> Come to think of it, this probably won't really help much after all.
> >> You can find menus and menu items in MSAA, but I don't think you can
> >> activate a menu option without first making it visible on screen.  I
> >> believe the menuItem codes mentioned earlier in this thread, locatable
> >> with WinDig, would allow you to execute menu items.  The JAWS
> >> SendMessage function should let you do that without AutoIt though.
> >>
> >> As far as sample code, there was some in the Skype scripts, probably in
> >> SkypeUtil.jsl; but I don't think it's there anymore.  I don't have to
> >> do this very often.
> >>
> >> On Tue, Dec 23, 2008 at 03:58:27PM -0500, Andy Borka wrote:
> >> Hi. Do you have any example code that searches for particular menu
items?
> >> How do you deal with the top level menus in the menu bar (telling what
one
> >> is what)?
> >>
> >>
> >> Twitter: www.twitter.com/sonfire
> >>
> >>
> >> -----Original Message-----
> >> From: jawsscripts-bounce@xxxxxxxxxxxxx
> >> [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Doug Lee
> >> Sent: Tuesday, December 23, 2008 2:50 PM
> >> To: jawsscripts@xxxxxxxxxxxxx
> >> Subject: [jawsscripts] Re: Searching menu structures for a particular
menu
> >> item
> >>
> >> It's a bit more involved than I can recall or fully describe here, but
> >> here are the main ingredients I remember:
> >>
> >> 1.  Get the menubar object with
> >> GetObjectFromEvent(getTopLevelWindow(getFocus()), ObjID_Menu, 0,
childID).
> >> ChildID is a placeholder.
> >>
> >> 2.  The menubar's items will be indexable by childIDs starting at 1,
> >> so for "File View Window Help," "Window" should be o.accName(3).  To
> >> get its object, do o.accChild(3).  You can of course search through
> >> these with a loop that runs from 1 through o.accChildCount inclusive.
> >>
> >> 3.  A menubar item has one child in MSAA:  The pop-up menu associated
with
> >> it.
> >> To get that, do .accChild(1) on what you got in the previous step.
> >>
> >> 4.  The menu you now have has menu items much like the menubar did,
> >> each with its own pop-up menu where applicable.  Start again at step 2
> >> to search deeper.
> >>
> >> Tip:  JAWS now has functions that search MSAA object trees for names.
> >> If this works for menu hierarchies, and depending on your needs once
> >> you find something, that may significantly decrease the level of
> >> effort required for your situation.
> >>
> >> On Tue, Dec 23, 2008 at 02:37:38PM -0500, Jamal Mazrui wrote:
> >> There is not a way to do this natively through JAWS, except possibly by
> >> searching the MSAA hierarchy associated with a menu.  I don't know how
> >> to do that, but Doug Lee might ....
> >>
> >> If you are willing to install a free COM server, AutoIt,
> >> http://AutoItScript.com
> >>
> >> includes the method documented below.  Another approach is to get the
ID
> >> of the menu item of interest via WinDig
> >> http://EmpowermentZone.com/wdsetup.exe
> >> and invoke it with a PostMessage call.
> >>
> >> Jamal
> >>
> >>
> >> WinMenuSelectItem
> >>
> >>
> >> Invokes a menu item of a window.
> >>
> >> WinMenuSelectItem "title", "text", "item" [, "item" [, "item" [, "item"
> >> [,
> >> "item" [, "item" [, "item"]]]]]]
> >>
> >>
> >> Parameters
> >> titleThe title of the window to read.
> >> textThe text of the window to read.
> >> itemText of Menu Item
> >> item(optional) Text of SubMenu item
> >> item(optional) Text of SubMenu item
> >> item(optional) Text of SubMenu item
> >> item(optional) Text of SubMenu item
> >> item(optional) Text of SubMenu item
> >> item(optional) Text of SubMenu item
> >>
> >>
> >> Return Value
> >> Success:Returns 1.
> >> Failure:Returns 0 if the menu could not be found.
> >>
> >>
> >> Remarks
> >> You should note that underlined menu items actually contain a &
> >> character to
> >> indicate the underlining. Thus, the menu item File would actually
> >> require the
> >> text "&File", and Convert would require "Con&vert" You can access menu
> >> items
> >> up to six levels deep; and the window can be inactive, minimized,
and/or
> >> even
> >> hidden.
> >>
> >> WinMenuSelectItem will only work on standard menus. Unfortunately, many
> >> menus
> >> in use today are actually custom written or toolbars "pretending" to be
> >> menus.
> >> This is true for most Microsoft applications.
> >>
> >>
> >> Related
> >> ControlCommand, Send
> >>
> >> Example
> >> Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
> >>
> >> ' This will select File, Page Setup in notepad
> >> oAutoIt.WinMenuSelectItem "Untitled - ", "", "&File", "Page Set&up..."
> >>
> >> On
> >> Tue, 23 Dec
> >> 2008, Andy Borka wrote:
> >>
> >>> Date: Tue, 23 Dec 2008 08:35:46 -0500
> >>> From: Andy Borka <andy@xxxxxxxxxxxxxxxxxxx>
> >>> Reply-To: jawsscripts@xxxxxxxxxxxxx
> >>> To: jawsscripts@xxxxxxxxxxxxx
> >>> Subject: [jawsscripts] Searching menu structures for a particular menu
> >>>     item
> >>>
> >>> I have a particular menu structure that I need to search through in
order
> >> to
> >>> get to a particular menu item. I know the text on the menu item I want
to
> >>> find but the placement of the menu items change depending on what
"view"
> >> you
> >>> are on in the program. How would I go about searching for and then
> >>> activating the menu item (or giving an error message if it can't be
> >> found)?
> >>> Twitter: www.twitter.com/sonfire
> >>>
> >>>
> >>>
> >>>
> >>> __________?
> >>> Visit and contribute to The JAWS Script Repository
http://jawsscripts.com
> >>>
> >>> View the list's information and change your settings at
> >>> http://www.freelists.org/list/jawsscripts
> >>>
> >> __________?
> >> Visit and contribute to The JAWS Script Repository
http://jawsscripts.com
> >>
> >> View the list's information and change your settings at
> >> http://www.freelists.org/list/jawsscripts
> >>
> >> -- 
> >> Doug Lee, Senior Accessibility Programmer
> >> SSB BART Group - Accessibility-on-Demand
> >> mailto:doug.lee@xxxxxxxxxxxxxxxx  http://www.ssbbartgroup.com
> >> "While they were saying among themselves it cannot be done,
> >> it was done." --Helen Keller
> >> __________
> >> Visit and contribute to The JAWS Script Repository
http://jawsscripts.com
> >>
> >> View the list's information and change your settings at
> >> http://www.freelists.org/list/jawsscripts
> >>
> >>
> >> __________?
> >> Visit and contribute to The JAWS Script Repository
http://jawsscripts.com
> >>
> >> View the list's information and change your settings at
> >> http://www.freelists.org/list/jawsscripts
> >>
> >> -- 
> >> Doug Lee, Senior Accessibility Programmer
> >> SSB BART Group - Accessibility-on-Demand
> >> mailto:doug.lee@xxxxxxxxxxxxxxxx  http://www.ssbbartgroup.com
> >> "While they were saying among themselves it cannot be done,
> >> it was done." --Helen Keller
> >> __________
> >> Visit and contribute to The JAWS Script Repository
http://jawsscripts.com
> >>
> >> View the list's information and change your settings at
> >> http://www.freelists.org/list/jawsscripts
> >>
> >>
> >> _______________________________________
> >> No viruses found in this incoming message
> >> Scanned by iolo AntiVirus 1.5.6.3
> >> http://www.iolo.com
> >>
> >
> > __________
> > Visit and contribute to The JAWS Script Repository
http://jawsscripts.com
> >
> > View the list's information and change your settings at
> > http://www.freelists.org/list/jawsscripts
> >
> >
>
> __________
> Visit and contribute to The JAWS Script Repository http://jawsscripts.com
>
> View the list's information and change your settings at
> http://www.freelists.org/list/jawsscripts
>

__________ 
Visit and contribute to The JAWS Script Repository http://jawsscripts.com

View the list's information and change your settings at 
http://www.freelists.org/list/jawsscripts

Other related posts: