Thursday, August 16, 2012 6:23 AM
Hi everybody. Recently someone brought to my atttention, that the MSAA interface will no longer be supported in the future. But I could not find any information in the internet. It would be great if you could clear things up for me. What exactly will be discontinued? Is it the support, bugfixing, or is it just a big misunderstanding
Thanks a lot!
Friday, August 17, 2012 4:31 PM
The primary API used for accessibility in Windows is the native code UI Automation API, (UIA). This has a number of improvements over MSAA, including much better performance and the ability for elements to more fully express their behaviors. Given that UIA has replaced MSAA, MSAA is now considered a legacy API. This means that no future development will be made on the MSAA API. UIA is the only API that's supported with respect to accessing new UI that was introduced in Windows 8.
MSAA servers that exist today are accessible to UIA client apps. It was expected that MSAA servers would exist for a number of years after UIA was introduced, and it was appropriate for UIA to be able to channel the data exposed by those MSAA servers over to UIA client apps. So for example, the Narrator screen reader available in Windows 8, (which uses UIA exclusively for accessing data), can access data from an app which implements MSAA. Narrator doesn't have to do anything itself to make that happen; rather UIA does all the work through its "MSAA Proxy".
Given that UIA is a more powerful API than MSAA, many apps will move to implement UIA fully over time, and the number of MSAA servers will reduce. As an intermediate step before moving fully to UIA, and MSAA server could choose to implement the IAccessibleEx interface, which can add some UIA-related functionality to existing MSAA servers.
So in answer to your question, the legacy MSAA API is supported at the moment, and as such UIA clients can access apps that use it. Windows is only investing in the native code UIA API in the future and so strongly encourages developers to move from MSAA to UIA.
For client apps, I have a number of UIA samples up at http://code.msdn.microsoft.com/site/search?f%5B0%5D.Type=User&f%5B0%5D.Value=Guy%20Barker%20MSFT which demonstrate the most commonly used features of UIA on the client side.
Tuesday, August 21, 2012 7:48 PM
Thanks for the clarification Guy. This helps clearn up the situation for MSAA servers. But what about MSAA clients?
I understood that UIA also provided a "proxy" for MSAA clients. Is this true?
Or will MSAA clients cease to function in Win8?
Wednesday, August 22, 2012 8:43 PM
MSAA clients are supported up to the point of application compatibility. So for example, MSAA clients that worked with UI in Windows 7 should continue to work with the same UI in Windows 8. You're correct in saying that UIA takes action to try to allow MSAA clients to access UI made accessible through UIA providers, and also to allow MSAA clients to be notified of events that were originally raised as UIA events.
MSAA clients are not guaranteed to work with new UI that was introduced in Windows 8. Having said that, my limited experiments trying to access UI that's new to Windows 8 from an MSAA client, did seem to work ok. You can try this yourself by using the Inspect SDK tool. By default Inspect runs in UIA mode, meaning it only calls the native-code UIA API. But you can select MSAA mode, which effectively turns Inspect into an MSAA client. In my tests, Inspect could still access Windows 8 UI based on focus or mouse tracking. But I don't know what accessibility data is not available to Inspect in this mode.
The Windows team is making no investment in additional support for MSAA clients going forward, given the on-going investment in the more performant and powerful UIA API. If you find any issues with application compatibility between Windows 7 and Windows 8, please do let us know.
Tuesday, September 11, 2012 8:36 AM
Thanks for clarfication!!