Win32 API 日本語リファレンス
ホームUI.Shell › IAccessibilityDockingService

IAccessibilityDockingService

COM
IID8849dc22-cedf-4c95-998d-051419dd3f76継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Windows ストアアプリが表示されていてスナップされていない場合、またはランチャーが表示されている場合に、アプリケーションウィンドウをモニターの下部にドッキングします。

メソッド 3

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetAvailableSize(HMONITOR hMonitor, DWORD* pcxFixed, DWORD* pcyMax)

アクセシビリティウィンドウを表示するために特定の画面上で利用できる寸法を取得します。

hMonitorHMONITORin利用可能なドッキングサイズを取得する対象のモニターのハンドルです。HMONITOR を取得する方法については、MonitorFromWindow を参照してください。
pcxFixedDWORD*out

このメソッドが正常に終了すると、このパラメーターには、指定されたモニター上でドッキングに利用できる固定幅(物理ピクセル単位)が格納されます。このモニターにドッキングされるウィンドウは、いずれもこの幅にサイズ調整されます。

メソッドが失敗した場合、この値には 0 が設定されます。

この値が NULL の場合、アクセス違反が発生します。

pcyMaxDWORD*out

このメソッドが正常に終了すると、このパラメーターには、指定されたモニター上でドッキングされたウィンドウに利用できる最大の高さ(物理ピクセル単位)が格納されます。

メソッドが失敗した場合、この値には 0 が設定されます。

この値が NULL の場合、アクセス違反が発生します。

戻り値

型: HRESULT

次の値を含む標準的な戻り値を返します。

戻り値 説明
S_OK
メソッドが成功しました。
HRESULT_FROM_WIN32(ERROR_INVALID_MONITOR_HANDLE)
hMonitor で指定されたモニターはドッキングをサポートしていません。

解説(Remarks)

使用するタイミング

ドッキングされたアクセシビリティウィンドウは、どの画面上でも使用できる領域の量が制限されます。したがって、アクセシビリティウィンドウをドッキングしようとする前に、この関数を呼び出して利用可能な寸法を取得してください。Windows ストアアプリの利用できる垂直方向の画面ピクセルが 768 未満になるようなウィンドウをドッキングすることはできません。

この例は、このメソッドの使用方法を示しています。


 IAccessibilityDockingService *pDockingService;
 
 HRESULT hr = CoCreateInstance(CLSID_AccessibilityDockingService, CLSCTX_INPROV_SERVER, nullptr, IID_PPV_ARGS(&pDockingService));
 if (SUCCEEDED(hr)) 
 {
     UINT uMaxHeight;
     UINT uFixedWidth;

     HMONITOR hMonitor = MonitorFromWindow(_hwndMyApplication, MONITOR_DEFAULTTONULL);
     if (hMonitor != nullptr)
     {
         hr = pDockingService->GetAvailableSize(hMonitor, &uMaxHeight, &uFixedWidth);
     }
 }
vtbl 4 HRESULT DockWindow(HWND hwnd, HMONITOR hMonitor, DWORD cyRequested, IAccessibilityDockingServiceCallback* pCallback)

指定されたウィンドウハンドルを、指定されたモニターハンドルにドッキングします。

hwndHWNDin渡されたモニターハンドル上にドッキングされるアクセシビリティアプリケーションウィンドウです。
hMonitorHMONITORinアクセシビリティアプリケーションウィンドウがドッキングされるモニターです。
cyRequestedDWORDin未定 (TBD)
pCallbackIAccessibilityDockingServiceCallback*in

アクセシビリティアプリケーションが Undock 通知を受け取るコールバックポインターです。

- uHeight [in]

この関数が成功した場合に、ウィンドウがドッキングされる高さ(ピクセル単位)です。GetAvailableSize メソッドの呼び出しで取得した puMaxHeight 変数以下でなければなりません。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
ウィンドウハンドルまたはモニターハンドルが無効です。
E_ACCESSDENIED
呼び出し元プロセスが UIAcess アクセシビリティアプリケーションではないか、呼び出し元プロセスがそのウィンドウを所有していません。
IMM_E_DOCKOCCUPIED
すでに別のウィンドウがドッキング領域を占有しています。一度にドッキングできるウィンドウは 1 つだけです。
IMM_E_INSUFFICIENTHEIGHT
要求された uHeight が、指定されたモニターで許可される最大ドッキング高さより大きいです。ただし、このエラーコードが返される場合、それはこのモニターがドッキングをサポートしていることを意味します(ただし高さは GetAvailableSize メソッドの呼び出しで示される高さです)。
HRESULT_FROM_WIN32(ERROR_INVALID_MONITOR_HANDLE)
モニターハンドルで指定されたモニターはドッキングをサポートしていません。
vtbl 5 HRESULT UndockWindow(HWND hwnd)

指定されたウィンドウハンドルが現在ドッキングされている場合、それのドッキングを解除します。

hwndHWNDin未定 (TBD)

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_ACCESSDENIED
ウィンドウが呼び出し元プロセスに属していません。
HRESULT_FROM_WIN32(ERROR_INVALID_WINDOW_HANDLE)
ウィンドウがドッキングされていません。

解説(Remarks)

このメソッドは、呼び出し元プロセスに属するウィンドウのドッキングを解除する場合にのみ使用できます。

class CAccessibilityApplicationWindow : public IAccessibilityDockingServiceCallback
{

    ....
    ....

    HRESULT _Undock()
    {
        return _pDockingService->UndockWindow(_hwndMyApplication);
    }

    IAccessibilityDockingService *_pDockingService;
    HWND _hwndMyApplication;
}
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IAccessibilityDockingService "{8849DC22-CEDF-4C95-998D-051419DD3F76}"
#usecom global IAccessibilityDockingService IID_IAccessibilityDockingService "{29CE1D46-B481-4AA0-A08A-D3EBC8ACA402}"
#comfunc global IAccessibilityDockingService_GetAvailableSize  3 sptr,var,var
#comfunc global IAccessibilityDockingService_DockWindow        4 sptr,sptr,int,sptr
#comfunc global IAccessibilityDockingService_UndockWindow      5 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。