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

IShellApp

COM
IIDa3e14960-935f-11d1-b8b8-006008059382継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

アプリケーションに関する一般的な情報を「プログラムの追加と削除」アプリケーションに提供するメソッドを公開します。

メソッド 5

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

vtbl 3 HRESULT GetAppInfo(APPINFODATA* pai)

アプリケーションに関する一般的な情報を取得します。

paiAPPINFODATA*inoutアプリケーション情報を返す APPINFODATA 構造体へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

**注** コントロールパネルの「プログラムの追加と削除」は、[APPINFODATA](/windows/win32/api/shappmgr/ns-shappmgr-appinfodata) 構造体の cbSize メンバーと dwMask メンバーを設定します。

実装では、cbSize を APPINFODATA のサイズと比較して検証する必要があります。cbSize が APPINFODATA のサイズと一致しない場合、このメソッドは E_FAIL のような COM エラー値を返す必要があります。

コントロールパネルの「プログラムの追加と削除」は、APPINFODATA 構造体の dwMask メンバーを設定し、AIM_DISPLAYNAMEAIM_SUPPORTURL を返すべきであることを示します。APPINFODATA で返す各値について、dwMask の対応するビットを設定する必要があります。その他のビットはすべてクリアする必要があります。

以下は dwMask ビットの使用方法のサンプルです。

HRESULT CPubApp::GetAppInfo(APPINFODATA *pData)
{
    if (sizeof(APPINFODATA) != pData->cbSize)
        return E_FAIL;

    // First save off the mask of requested data items.

    const DWORD dwMask = pData->dwMask;

    // Zero-out the mask.  Bits will be set as items are obtained. 

    pData->dwMask = 0;

    // Call an internal function that obtains data and sets
    // bits in pData->dwMask for each item obtained.

    return get_app_info_data(pData, dwMask);
}
vtbl 4 HRESULT GetPossibleActions(DWORD* pdwActions)

アプリケーションに対して許可される管理アクションのビットマスクを取得します。

pdwActionsDWORD*outサポートされているアクションのビットマスクを返す DWORD 型の変数へのポインター。ビットフラグは APPACTIONFLAGS で説明されています。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

APPACTIONFLAGS のビットマスクのうち、「プログラムの追加と削除」が認識するのは APPACTION_INSTALLAPPACTION_ADDLATER のみです。

vtbl 5 HRESULT GetSlowAppInfo(SLOWAPPINFO* psaid)

低速なソースを起源とする情報をアプリケーションに返します。このメソッドは公開されたアプリケーションには適用されません。

psaidSLOWAPPINFO*outアプリケーション情報を返す SLOWAPPINFO 構造体へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

IPublishedApp の実装は E_NOTIMPL を返す必要があります。このメソッドは、インストール済みアプリケーションに対して「プログラムの追加と削除」が内部的に使用します。

vtbl 6 HRESULT GetCachedSlowAppInfo(SLOWAPPINFO* psaid)

低速なソースを起源とする情報をアプリケーションに返します。IShellApp::GetSlowAppInfo とは異なり、このメソッドはキャッシュされた情報を返すことができます。このメソッドは公開されたアプリケーションには適用されません。

psaidSLOWAPPINFO*outアプリケーション情報を返す SLOWAPPINFO 構造体へのポインター。

戻り値

型: HRESULT

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

IPublishedApp の実装は E_NOTIMPL を返します。このメソッドは、インストール済みアプリケーションに対して「プログラムの追加と削除」が内部的に使用します。

vtbl 7 HRESULT IsInstalled()

指定されたアプリケーションが現在インストールされているかどうかを示す値を取得します。

戻り値

型: HRESULT

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

戻り値 説明
S_OK
アプリケーションがインストールされています。
S_FALSE
アプリケーションはインストールされていません。

解説(Remarks)

アプリケーションの発行元は、アプリケーションが現在インストールされているかどうかを判定し、インストールされている場合は S_OK を、そうでない場合は S_FALSE を返す必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IShellApp "{A3E14960-935F-11D1-B8B8-006008059382}"
#usecom global IShellApp IID_IShellApp "{}"
#comfunc global IShellApp_GetAppInfo            3 var
#comfunc global IShellApp_GetPossibleActions    4 var
#comfunc global IShellApp_GetSlowAppInfo        5 var
#comfunc global IShellApp_GetCachedSlowAppInfo  6 var
#comfunc global IShellApp_IsInstalled           7
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。