IAccessibilityDockingService
COM公式ドキュメント
Windows ストアアプリが表示されていてスナップされていない場合、またはランチャーが表示されている場合に、アプリケーションウィンドウをモニターの下部にドッキングします。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
アクセシビリティウィンドウを表示するために特定の画面上で利用できる寸法を取得します。
| hMonitor | HMONITOR | in | 利用可能なドッキングサイズを取得する対象のモニターのハンドルです。HMONITOR を取得する方法については、MonitorFromWindow を参照してください。 |
| pcxFixed | DWORD* | out | このメソッドが正常に終了すると、このパラメーターには、指定されたモニター上でドッキングに利用できる固定幅(物理ピクセル単位)が格納されます。このモニターにドッキングされるウィンドウは、いずれもこの幅にサイズ調整されます。 メソッドが失敗した場合、この値には 0 が設定されます。 この値が NULL の場合、アクセス違反が発生します。 |
| pcyMax | DWORD* | out | このメソッドが正常に終了すると、このパラメーターには、指定されたモニター上でドッキングされたウィンドウに利用できる最大の高さ(物理ピクセル単位)が格納されます。 メソッドが失敗した場合、この値には 0 が設定されます。 この値が NULL の場合、アクセス違反が発生します。 |
戻り値
型: HRESULT
次の値を含む標準的な戻り値を返します。
| 戻り値 | 説明 |
|---|---|
| メソッドが成功しました。 | |
|
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);
}
}
指定されたウィンドウハンドルを、指定されたモニターハンドルにドッキングします。
| hwnd | HWND | in | 渡されたモニターハンドル上にドッキングされるアクセシビリティアプリケーションウィンドウです。 |
| hMonitor | HMONITOR | in | アクセシビリティアプリケーションウィンドウがドッキングされるモニターです。 |
| cyRequested | DWORD | in | 未定 (TBD) |
| pCallback | IAccessibilityDockingServiceCallback* | in | アクセシビリティアプリケーションが Undock 通知を受け取るコールバックポインターです。 - uHeight [in]この関数が成功した場合に、ウィンドウがドッキングされる高さ(ピクセル単位)です。GetAvailableSize メソッドの呼び出しで取得した puMaxHeight 変数以下でなければなりません。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| ウィンドウハンドルまたはモニターハンドルが無効です。 | |
| 呼び出し元プロセスが UIAcess アクセシビリティアプリケーションではないか、呼び出し元プロセスがそのウィンドウを所有していません。 | |
|
すでに別のウィンドウがドッキング領域を占有しています。一度にドッキングできるウィンドウは 1 つだけです。 |
|
要求された uHeight が、指定されたモニターで許可される最大ドッキング高さより大きいです。ただし、このエラーコードが返される場合、それはこのモニターがドッキングをサポートしていることを意味します(ただし高さは GetAvailableSize メソッドの呼び出しで示される高さです)。 |
|
モニターハンドルで指定されたモニターはドッキングをサポートしていません。 |
指定されたウィンドウハンドルが現在ドッキングされている場合、それのドッキングを解除します。
| hwnd | HWND | in | 未定 (TBD) |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| ウィンドウが呼び出し元プロセスに属していません。 | |
|
ウィンドウがドッキングされていません。 |
解説(Remarks)
このメソッドは、呼び出し元プロセスに属するウィンドウのドッキングを解除する場合にのみ使用できます。
例
class CAccessibilityApplicationWindow : public IAccessibilityDockingServiceCallback
{
....
....
HRESULT _Undock()
{
return _pDockingService->UndockWindow(_hwndMyApplication);
}
IAccessibilityDockingService *_pDockingService;
HWND _hwndMyApplication;
}
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 指定が可能。#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,sptr,sptr #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から自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。