Jon says he's seeing this issue on controls that WE calls custom controls. On Thu, Dec 09, 2010 at 10:14:08AM -0500, Ron Parker wrote:
I just looked at the code, and the only reason you should ever fail to get a Control object for a window would be if the window itself isn't in the Window-Eyes OSM for some reason. That should be fairly rare. On 12/9/2010 10:04 AM, Doug Lee wrote: >Yes this is very helpful info. The only remaining concern I can see >is that my coworker, Jon, reports that not all windows have .control >objects associated with them. > >On Thu, Dec 09, 2010 at 09:49:34AM -0500, Doug Geoffray wrote: >Then yes, the Window.Control.Previous and Window.Control.Next will get >you the previous and next window in Z order (also commonly referred to >as tab order). In fact when you use these properties, Window-Eyes >simply calls the GetWindow function with either GW_HWNDPREV or GW_HWNDNEXT. > >You may also be able to use the Window.Control.Taborder property to also >help you... > >Does this help? >Doug > >On 12/9/2010 9:26 AM, Doug Lee wrote: >>I don't know my coworker's exact use case, but one I can think of is >>when a control in focus is predictably labeled by the control prior to >>it in Z order, or the prior Static control in Z order, or less >>commonly, by the prior Static to the focused control's parent or >>grandparent. Screen readers sometimes automate this sort of tree >>search because these algorithms have proven effective in enough cases >>I guess. I've run into the need for this sort of thing quite often in >>JAWS scripting, though off the top of my head I don't know how many of >>those instances would have been adequately addressed by just a loop >>through directChildren. >> >>On Thu, Dec 09, 2010 at 08:32:22AM -0500, Doug Geoffray wrote: >>Hello Doug L, >> >>Regarding your Z order question... Can you give me a specific example >>what you are needing this for? Maybe that would help us give you a >>better idea of what you can currently do or something we could add in >>the future. >> >>Thanks, >>Doug G >> >>On 11/22/2010 3:33 PM, Doug Lee wrote: >>>We're looking for a reliable way to get the next and previous window >>>in Z order from a given window. It might sometimes also be useful >>>to get the first and last window in Z order at the given window's >>>tree level. The Windows API GetWindow() function allows this sort >>>of query, and there are WinAPI functions for next and prior window, >>>but I don't see a direct way to do it in Window-Eyes. I'm betting >>>I missed something obvious. >>> >>>My two ideas are >>> >>>' Given window, the one to start from ... >>>dim nextWindow, priorWindow >>>' Idea 1. >>>set nextWindow = window.control.next.window >>>set priorWindow = window.control.previous.window >>>' Idea 2. >>>dim windows : set windows = window.parent.directChildren >>>dim i >>>for i = 1 to windows.count >>> if windows(i).handle = window.handle then >>> set nextWindow = windows(i+1) >>> set priorWindow = windows(i-1) >>> end if >>>next >>> >>>Plus error checking of course. >>> >>>But I don't know if control.next/previous or directChildren sort by Z >>>order, so I'm not sure if one approach is more accurate than the other. >>>I'm also assuming that window.control is always valid for all Window >>>objects here. >>> >>>Is there a better way of doing this, and if not, is the >>>window.control.next/previous.window method the preferred way of doing it? >>> >>> -- Doug Lee, Senior Accessibility Programmer SSB BART Group - Accessibility-on-Demand mailto:[email protected] http://www.ssbbartgroup.com "While they were saying among themselves it cannot be done, it was done." --Helen Keller
