IApplicationViewCollection
Immersive Shellにおけるアプリケーションのメイン画面を検索・列挙します。
確認済み OS
Windows 10 (Build 10240, 10586, 14393) (Windows 8.1には存在しません)
構文
[C/C++]
// struct IApplicationViewCollection : public IUnknown DECLARE_INTERFACE_IID_(IApplicationViewCollection, IUnknown, "2C08ADF0-A386-4B35-9250-0FE183476FCC") { /*** IUnknown methods ***/ STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObject) PURE; STDMETHOD_(ULONG, AddRef)(THIS) PURE; STDMETHOD_(ULONG, Release)(THIS) PURE; /*** IApplicationViewCollection methods ***/ STDMETHOD(GetViews)(THIS_ IObjectArray**) PURE; STDMETHOD(GetViewsByZOrder)(THIS_ IObjectArray**) PURE; STDMETHOD(GetViewsByAppUserModelId)(THIS_ PCWSTR, IObjectArray**) PURE; STDMETHOD(GetViewForHwnd)(THIS_ HWND, IApplicationView**) PURE; STDMETHOD(GetViewForApplication)(THIS_ IImmersiveApplication*, IApplicationView**) PURE; STDMETHOD(GetViewForAppUserModelId)(THIS_ PCWSTR, IApplicationView**) PURE; STDMETHOD(GetViewInFocus)(THIS_ IApplicationView**) PURE; STDMETHOD(RefreshCollection)(THIS) PURE; STDMETHOD(RegisterForApplicationViewChanges)(THIS_ IApplicationViewChangeListener*, DWORD*) PURE; STDMETHOD(RegisterForApplicationViewPositionChanges)(THIS_ IApplicationViewChangeListener*, DWORD*) PURE; STDMETHOD(UnregisterForApplicationViewChanges)(THIS_ DWORD) PURE; };
※ すべてのメソッドの挙動は確認していません。
関連する型
インターフェイス
- IApplicationView
- IApplicationViewChangeListener
- IImmersiveApplication
- IObjectArray - Windows SDKの ObjectArray.h をインクルード
使用上の注意点
- GetViewsByAppUserModelId などで指定する「AppUserModelId」文字列は IAppxManifestApplication::GetAppUserModelId (MSDN Library) などで得られるアプリ一意の識別子です。
解説
Windows 10では、従来のデスクトップアプリケーションのウィンドウとWindows 8以降のModern UIアプリのビューを同等に扱うように実装されており、IApplicationViewCollection では実行中のアプリすべてのビューを取得することができます。例として、デスクトップアプリケーションのビューを得る場合は GetViewForHwnd メソッドを用いてウィンドウハンドルから IApplicationView のインスタンスを取得できます。
このインターフェイスの取得元
「CLSID_ImmersiveShell」({C2F03A33-21F5-47FA-B4BB-156362A2F239}) のクラスインスタンスを CoCreateInstance で作成し、IServiceProvider::QueryService にてサービスIDに IID_IApplicationViewCollection({2C08ADF0-A386-4B35-9250-0FE183476FCC}) を指定して取得します。
HRESULT hr; IServiceProvider* pService; IApplicationViewCollection* pColl; // エクスプローラーが内部で登録するクラスのため // CLSCTX_LOCAL_SERVER を指定して取得する hr = CoCreateInstance(CLSID_ImmersiveShell, NULL, CLSCTX_LOCAL_SERVER, IID_IServiceProvider, reinterpret_cast<void**>(&pService)); if (SUCCEEDED(hr)) { hr = pService->QueryService(IID_IApplicationViewCollection, IID_IApplicationViewCollection, reinterpret_cast<void**>(&pColl)); if (SUCCEEDED(hr)) { // ここで IApplicationViewCollection を利用 pColl->Release(); } pService->Release(); }
最終更新日: 2016/10/10