Hey Vic, It's possible to do that via the Windows API but not native JAWS scripting functions, as far as I know. WinDig is open source http://EmpowermentZone.com/wdsetup.exe so feel free to look at the source code in WinDig.wbt (the WinBatch language). I also wrote a utility dedicated to enumerating menu items which is included in HomerKit http://EmpowermentZone.com/kitsetup.zip MenuList.bas is in PowerBASIC. The small executable, MenuList.exe, creates a text file that lists all menu items, including their current state (which addresses another question someone had about whether a menu item is disabled). Look at the UIAlterNateMenu script in Editor.jss for an example of how the output is parsed. Jamal On Wed, 24 Dec 2008, Victor Tsaran wrote: > Date: Wed, 24 Dec 2008 12:10:48 -0800 > From: Victor Tsaran <vtsaran@xxxxxxxxx> > Reply-To: jawsscripts@xxxxxxxxxxxxx > To: jawsscripts@xxxxxxxxxxxxx > Subject: [jawsscripts] Re: Searching menu structures for a particular > menu item > > Hey Jamal, > A quick question for you: is there a way to retrieve text string > associated with a menu ID without actually activating the menu item > itself? I am not able to figure that one out and not sure if the method > even exists.. > Thx, > Vic > > Jamal Mazrui wrote: > > I found a message I previously wrote explaining the SendMessage (or > > PostMessage) technique for invoking a menu item. Once again, WinDig is > > available at > > http://EmpowermentZone.com/wdsetup.exe > > > > You can get almost any of my programs from the Open Source Projects page > > of > > http://NonvisualDevelopment.org > > > > Jamal > > > > From: Jawsscripts-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of Jamal Mazrui > > [empower@xxxxxxxxx] > > Sent: Friday, September 23, 2005 6:36 AM > > To: jawsscripts@xxxxxxxxxxxxxxxxxxxx > > Subject: Using WinDig output to invoke menu choices via SendMessage > > > > In the "Menus" section of WinDig output, the last piece of data on the > > line for a menu item is its menu ID--if one exists. If a menu item does > > not have a hot key but does have a menu ID, you can create a hot key via a > > JAWS script and the SendMessage function. For example, the following line > > of WinDig output is about the Paste Special menu item of WordPad: > > > > 2.5 Paste Special... S 57639 > > > > The 2.5 number is the outline number of the menu hierarchy, indicating > > that the menu item is the fifth one down the second menu, the Edit menu. > > The ... ellipses indicate that the menu item presents a dialog. S is the > > access letter, indicating that you can press it when the Edit menu is > > dropped down to invoke this menu item. Finally, the 57639 number is the > > menu ID, similar to a control ID. > > > > This review of the WinDig output for WordPad showed no accelerator key for > > PasteSpecial but a menu ID was available. I am not suggesting that > > scripts are needed for every menu item without a hot key--this is just to > > illustrate the technique, and you would judge whether such a script adds > > significant value in the context of the application. > > > > Although it is also possible to invoke a menu item by sending keystrokes > > to the application, that technique is less reliable because it is affected > > by the current keyboard focus. It also tends to produce extra speech > > which you may then need to silence with SpeechOff and Delay functions. > > > > The SendMessage approach, on the other hand, does not actually activate > > and navigate the menus of the application's user interface. It uses a > > Windows message constant, WM_COMMAND, which is passed with a menu ID to > > the application window associated with the menu of interest. The relevant > > window handle is usually the one returned by GetAppMainWindow, but the > > InvokeMenuItem wrapper function below does not assume this in case you > > wish to use another window, including a window of an application other > > than the one with focus. > > > > The code below consists of a generic function called InvokeMenuItem, and > > a sample script called PasteSpecial, which might be attached to > > Control+Shift+V. Note that a limitation of this approach is that it only > > works if the application implements standard menus of the Win32 API. > > Unfortunately, many applications do not, such as those in the Microsoft > > Office suite. > > > > Jamal > > > > > > Int Function InvokeMenuItem(Handle h, Int i) > > Var > > Int WM_COMMAND > > > > Let WM_COMMAND = 273 > > Return SendMessage(h, WM_COMMAND, i, 0) > > EndFunction > > > > Script PasteSpecial() > > Var > > Handle h, > > Int i > > > > Let h = GetAppMainWindow(GetFocus()) > > Let i = 57639 ; menu ID of Paste Special in WordPad > > > > InvokeMenuItem(h, i) > > EndScript > > > > > > _____________________________________________________________ > > > > To leave this list, send a blank message to > > jawsscripts-unsubscribe@xxxxxxxxxxxxxxxxxxxxx > > Information about all of our lists: > > http://blindprogramming.com/mailman/listinfo > > Other blindness lists: > > http://www.visionrx.com/library/resources/resource_int1.asp > > Web site address: http://www.BlindProgramming.com > > > > > > _______________________________________________ > > Jawsscripts mailing list > > Jawsscripts@xxxxxxxxxxxxxxxxxxxx > > http://blindprogramming.com/mailman/listinfo/jawsscripts_blindprogramming.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