I have another clue. I just noticed that normally, my flash objects are "said" from the function SayObjectTypeAndText(). However, when I do the TopOfFile(), SayAll(), the objects are Said, but not through the SayObjectTypeAndText(). This has a bad side affect in that it doesn't say them the way I want since I override this function and do other things. -----Original Message----- From: jawsscripts-bounce@xxxxxxxxxxxxx [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Mark A. DeMichele Sent: Sunday, February 14, 2010 10:52 AM To: jawsscripts@xxxxxxxxxxxxx Subject: [jawsscripts] Re: Jaws reading mixed up info when doing SayAll Actually, I think you're understanding of my issues are pretty good. I have the window handle to the flash player object and I also have the MSAA object pointer and child ID of the client object for the flash player. Do you think I can use that to "work with the virtual buffer". Also, it's not clear to me how to make use of the virtual buffer. I searched for MoveToLandmark() and only found it reference in two places in Virtual.jss. I expected to find its definition in some JSS file, but I didn't. I was under the impression that all functions were defined in script files somewhere, but I guess Jaws handles some internally? Here's a theory I have, please let me know if you think my understanding of things is off or not. When I do JawsTopOfFile() and then SayAll(), IE is doing the "Saying" and when it hits my flash player, it's somehow smart enough to switch to MSAA to get the info and "say" that as well. However, when I point directly to the flash window, I lose those smarts and it tries to say it based on position of the items in it (but those items are MSAA so I'm a little confused here). Not only that, it seems to be getting it's info from some buffer that was previously filled with stuff that's not current. The question is how to I get it to a) use MSAA to say stuff and b) clear anything it might have had buffered. I tried adding a Refresh(), Delay(2) (I saw this in another script), but it didn't seem to help. I also tried add in and MSAARefresh(), but I think according to the documentation that only refreshes the currently focused object. Any help or insight, of just pointing me a good examples would be greatly appreciated. Thanks so much for the time you already spent answering my questions. -----Original Message----- From: jawsscripts-bounce@xxxxxxxxxxxxx [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Travis Roth Sent: Sunday, February 14, 2010 10:20 AM To: jawsscripts@xxxxxxxxxxxxx; 'Jamal Mazrui' Subject: [jawsscripts] Re: Jaws reading mixed up info when doing SayAll Hi Mark, As for JAWS remembering stuff that isn't there: perhaps JAWS isn't updating its off screen model (OSM) in a timely manner. Try a screen refresh to see if that forces some improvement. (JAWSKey+Escape, or refresh() function.) As for SayWindow() I suspect that JAWS is trying to do exactly what you ask of it: read the contents of the window.This function is based on JAWS' idea of what the window has in it based on its OSM. I don't believe that MSAA is used. You are correct, JAWS has two modes of working: the window/OSM way, and MSAA. And they do not seamlessly work together all of the time. You will want your Flex application to use MSAA, so you will need to use JAWS' MSAA functions. If you can get it to work with the virtual buffer enabled, the best bet for moving to your Flex application is to use one of the functions for navigating the virtual buffer, such as MoveToLandmark() (if you have landmarks in your HTML.) Or perhaps MoveToTag() looking for the "object" tag. If I misunderstood your goal of navigation, please try again. -----Original Message----- From: jawsscripts-bounce@xxxxxxxxxxxxx [mailto:jawsscripts-bounce@xxxxxxxxxxxxx] On Behalf Of Mark A. DeMichele Sent: Sunday, February 14, 2010 7:58 AM To: Jamal Mazrui; jawsscripts@xxxxxxxxxxxxx Subject: [jawsscripts] Re: Jaws reading mixed up info when doing SayAll I did try them and it doesn't help. It seems that jaws has two modes of "Saying". Sometimes it seems to do based on the MSAA structure and then other times it seems to do it based on physical position on the screen. One thing I noticed is that I have a navigation bar at the top. I purposely put that at the end of my MSAA tree. That way, normally jaws says it last. However, when I do the SayWindow or MoveToWIndow and SayAll, it will read the buttons in the navigation bar first. Maybe that's a clue. I don't know. I looked through the IE scripts to see if anything funky is going on in the TopOfFile, but I didn't see anything. Why would Jaws still remember items that are not there anymore. It's kind of strange. -----Original Message----- From: Jamal Mazrui [mailto:empower@xxxxxxxxx] Sent: Sunday, February 14, 2010 8:53 AM To: jawsscripts@xxxxxxxxxxxxx Cc: Mark A. DeMichele Subject: Re: [jawsscripts] Jaws reading mixed up info when doing SayAll Try the Refresh and MSAARefresh functions in case they make a difference. Jamal On 2/13/2010 6:39 PM, Mark A. DeMichele wrote: > I have an odd issue. I'm adding some custom script on top of the latest > Flex/Flash scripts to get a flex application to do some special stuff in > IE. My flex app essentially displays a "document". It has a navigation > area which allows the user to change to another "document". I wrote > some scripts to sense that change and when that happens I want jaws to > say the new document. Here's the odd part. I have the window handle to > the flash window within IE. If I do something like the following, > > > MoveToWindow(hwnd) > > JawsPageUp() > > JawsHome() > > SayAll() > > > > Or just > > > > SayWindow(hwnd) > > > > It does two things I can't explain. First, it reads the stuff from my > app in "screen order" (i.e., top to bottom, left to right), not in the > MSAA order I see the stuff in the MS Accessibility Explorer. Also, and > this is worse, it's saying a garbled mess of stuff from all the > documents I loaded since then mix in with the current one. It's as if > it's buffering stuff based on screen location and it's not ever getting > rid of it. I used the AccEvent program to check that things were > getting destroyed and it seems they are, but for some reason, Jaws wants > to read them. > > > > If, however, I use this code > > > > JawsTopOfFile() > > SayAll() > > > > Then jaws reads everything as expected (no old document info). However, > it says the entire IE window contents which I don't really want. But > the order is fine. > > > > Is there something I'm doing wrong? I'm a seasoned experienced > programmer, but I'm new to Jaws scripts so any technical information or > background would be greatly appreciated. So far, I read both the basic > scripting manual and most of the FSDN manual, and to be honest, I'm > learning the most by reading through the scripts that were delivered > with jaws. If anyone knows any other places to get good technical info, > that would be great. > > > > Thanks, > > Mark > > > __________ > Visit and contribute to The JAWS Script Repository http://jawsscripts.com > > View the list's information and change your settings at > //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 //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 //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 //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 //www.freelists.org/list/jawsscripts