Thanks Jamal, I will definitely give your tools a whirl. Best, Victor On 12/30/2008 10:02 AM, Jamal Mazrui wrote: > 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 > > __________ 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