Programming Field - ドキュメント無し関数 / 名前無し関数

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;
};

※ すべてのメソッドの挙動は確認していません。

関連する型

インターフェイス

使用上の注意点

解説

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