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

  • From: Victor Tsaran <vtsaran@xxxxxxxxx>
  • To: jawsscripts@xxxxxxxxxxxxx
  • Date: Sun, 28 Dec 2008 15:49:20 -0800

Use one of the tools mentioned (and not mentioned): WinDig, WinInspector 
and, the one I use, Spy++ from the Visual Studio SDK.
V
Geoff Chapman wrote:
> 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
> 
> 

__________ 
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: