IAccessibilityDockingService interface

Docks a single accessibility app window to the bottom of a screen.

Members

The IAccessibilityDockingService interface inherits from the IUnknown interface. IAccessibilityDockingService also has these types of members:

  • Methods

Methods

The IAccessibilityDockingService interface has these methods.

Method Description
DockWindow

Docks an accessibility app window to the bottom of a screen while the system is in a full-screen or filled mode.

GetAvailableSize

Retrieves the dimensions available on a specific screen for displaying an accessibility window.

UndockWindow

Undocks a currently docked accessibility app window from the bottom of the screen.

 

Remarks

When to implement

A default implementation of this interface is provided with Windows. Do not implement your own version. The default implementation can be cocreated using CLSID_AccessibilityDockingService.

Purpose

Windows users want to be able to use non-transient UI accessibility tools such as on-screen keyboards while using their Windows Store apps, without those accessibility UI elements blocking the view of the app. IAccessibilityDockingService enables an accessibility app to dock a single accessibility window to the bottom of the screen. In the case of multiple monitors, the window is docked to the bottom of the screen on the monitor that displays the Start screen. When the app docks its accessibility window, existing apps resize so that the accessibility window does not cover anything in the new Windows UI. From the user's point of view, the accessibility window becomes part of the new Windows UI.

Accessibility app developers can use this interface to dock their application window in one of two situations:

  • A Windows Store app is visible and not snapped.
  • The Launcher is visible.

Threading

This object is apartment-threaded. It will not have an impact on the calling thread's COM apartment and is safe to call on a UI thread. However, because IAccessibilityDockingService synchronously positions the window when it is being docked, it is important that the UI thread that belongs to that window is not blocked when IAccessibilityDockingService::DockWindow is called.

IAccessibilityDockingService works with the IAccessibilityDockingServiceCallback::Undocked method. Callback listeners receive this notification when they have been forcibly undocked. The callback occurs in the same COM apartment in which the call to IAccessibilityDockingService::DockWindow was made.

Usage notes

When your app's window is docked, you must ensure that you have the WS_EX_TOOLWINDOW style set on your window. Otherwise, it will end up being moved out of position after DockWindow is called. The following code demonstrates how to do this. Please see MSDN for information on these flags and their interaction with SetWindowPos and SetWindowLongPtr.


 // Set the window style
 LONG_PTR OldWindowExStyle = GetWindowLongPtr(hwnd, GWL_EXSTYLE);
 LONG_PTR NewWindowExStyle = OldWindowExStyle | WS_EX_TOOLWINDOW;
 SetWindowLongPtr(hwnd, GWL_EXSTYLE, NewWindowExStyle);

 // In order to make the new window style take effect, we call SetWindowPos.
 SetWindowPos(hwnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED | SWP_NOACTIVATE);

Security

Use of this API requires a callback interface pointer (IAccessibilityDockingServiceCallback) to be passed from a higher integrity-level process (the accessibility app) to a lower integrity-level process (the Shell). Accessibility app developers should be aware that a lower integrity-level process will call IAccessibilityDockingServiceCallback::Undocked. The data passed to the accessibility app is an enumeration value.

Requirements

Minimum supported client

Windows 8 [desktop apps only]

Minimum supported server

Windows Server 2012 [desktop apps only]

Header

Shobjidl.h

IDL

Shobjidl.idl