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

  • From: Doug Lee <doug.lee@xxxxxxxxxxxxxxxx>
  • To: jawsscripts@xxxxxxxxxxxxx
  • Date: Tue, 23 Dec 2008 16:05:40 -0500

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

Other related posts: