210 likes | 775 Views
APP-189T. Build assistive technologies for Windows 8. Brett Humphrey Senior Test Lead Microsoft Corporation. Agenda. Demo M agnifier and Narrator Windows 8 Accessibly Platform, new and improved Integration and extension o pportunities Metro s tyle a pps Call to action
E N D
APP-189T Build assistive technologies for Windows 8 Brett Humphrey Senior Test Lead Microsoft Corporation
Agenda • Demo Magnifier and Narrator • Windows 8 Accessibly Platform, new and improved • Integration and extension opportunities • Metro style apps • Call to action You’ll leave with the understanding • UI Automation is our core platform • New opportunities for innovation, integration, and extension
demo Accessibility Platform in action Magnifier Narrator
Windows 8 Narrator is… • UI Automation • Windows 8 UI • Touch integration • Industry standards
Accessibility Platform, new and improved New Improved UI Automation Magnification APIs DWM always on Ease of Access Extensibility • Touch Interaction • Hardware Button Extensibility • TTS Engines
Integration opportunities • Windows 8 UI • Transitions between Metro style apps and desktop • Docking below Metro style app apace • Touch keyboard interaction • Ability to appear on top
Metro style apps • UI Automation
Call to action • Port existing software to Windows 8 • Take advantage of the Windows 8 extensibility • Consider new touch/tablet opportunities
References • UI Automation Improvements • Same location as Win7 headers , uiautomation.h (key improvements made in ITextProvider2) • Shell Notifications • IImmersiveModeNotification interface available in shobjidl.h. • Docking • IAccessibilityDockingServiceCallback interface is in shobjidl.h • Touch injection API • registration API as well as all WM_TOUCH, device, and injection APIs are in Winuser.h • ANRUS API’s are in Oleacc.h • how to process touch data is in interactioncontext.h • Full Screen Magnification • Same location as Win7 Mag API, magnification.h • Font Smoothing Whitepaper • http://download.microsoft.com/download/E/0/9/E0911C64-8A86-4274-B474-91D200922F90/Magnification_Approaches_for_Accessibility.docx
thank you Feedback and questions http://forums.dev.windows.com Session feedbackhttp://bldw.in/SessionFeedback
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Notifications Code Snippet IImmersiveMode *_pImmersiveMode; DWORD _dwCookieImmersive; hr = CoCreateInstance(CLSID_ImmersiveMode, nullptr, CLSCTX_INPROC, IID_PPV_ARGS(&_pImmersiveMode)); if (SUCCEEDED(hr)) { hr = _pImmersiveMode->Advise(this, &_dwCookieImmersive); } // IImmersiveModeNotification methods. IFACEMETHODIMP CNotificationHandler::MonitorModeChanged(__in HMONITOR hMonitor, __in IMMERSIVE_MONITOR_MODE modePrevious, __in IMMERSIVE_MONITOR_MODE modeCurrent) { // Take action in response to a switch to or from the desktop at a specific monitor... } IFACEMETHODIMP CNotificationHandler::LauncherVisibilityChange(__in VARIANT_BOOL fCurrentVisibleState) { // Take action in response to the Start screen either being shown or hidden... }
Docking Code Snippet IAccessibilityDockingService *_pDockingService; hr = CoCreateInstance(__uuidof(AccessibilityDockingService), nullptr, CLSCTX_INPROC, IID_PPV_ARGS(&_pDockingService)); UINT uiWidthFixed, uiHeightMax; hr = _pDockingService->GetAvailableSize(hMonitor, &uiWidthFixed, &uiHeightMax); if (SUCCEEDED(hr)) { // Check whether there’s sufficient space on the screen to dock the window. if (uiHeightMax >= c_minDockHeight) { // The window being docked must not be resizable, and must have the WS_EX_TOOLWINDOW extended style. hr = _pDockingService->DockWindow(_hWndDocked, hMonitor, uiHeightMax, this); } } // IAccessibilityDockingServiceCallback::Undocked() method. IFACEMETHODIMP CNotificationHandler::Undocked(__in UNDOCK_REASON undockReason) { // Take action in response to the docked window being undocked for some reason // other than a call to the UndockWindow() method. (For example, the screen // resolution has changed, and there’s no longer room to dock the window.) }
Touch Code Snippet //the HWND specified needs to be a message window (have HWND_MESSAGE as its parent) and be created in a process that has UIAccessprivileges if (RegisterPointerInputTarget(hwnd, PT_TOUCH)) { //once we have registered as the touch target, notify system components that a touch accessibility component is running hr= AccSetRunningUtilityState(hwnd, ANRUS_TOUCH_MODIFICATION_ACTIVE, ANRUS_TOUCH_MODIFICATION_ACTIVE); }
session code Title of Presentation Name Title Microsoft Corporation