IApplicationActivationManager
COM公式ドキュメント
Launch、File、Protocol の各拡張機能について Windows ストアアプリをアクティブ化するメソッドを提供します。通常、このインターフェイスはデバッガーやデザインツールで使用します。
解説(Remarks)
実装するタイミング
このインターフェイスを自分で実装しないでください。Windows は CApplicationActivationManager クラスの一部として実装を提供しています。このクラスのインスタンスを取得するには、CLSID_ApplicationActivationManager クラス ID を指定して CoCreateInstance を呼び出します。使用上の注意
IApplicationActivationManager オブジェクトは、アプリに渡されるアクティブ化イベント引数オブジェクト(LaunchActivatedEventArgs、FileActivatedEventArgs、ProtocolActivatedEventArgs)を提供するために、ホストプロセス内にスレッドを作成します。呼び出し元プロセスが長時間存続する場合は、イベント引数がターゲットアプリで使用されるのに十分な間存在するという前提のもと、このオブジェクトをインプロセスで作成できます。一方、呼び出し元プロセスがターゲットアプリの起動のためだけに生成される場合は、CLSCTX_LOCAL_SERVER を使用して IApplicationActivationManager オブジェクトをアウトオブプロセスで作成してください。これにより、オブジェクトは Dllhost.exe インスタンス内に作成され、アクティブ化イベント引数オブジェクトへの未解放の参照に基づいてオブジェクトの有効期間が自動的に管理されます。メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定された Windows ストアアプリを、現在のセッションにおける汎用起動コントラクト(Windows.Launch)に対してアクティブ化します。
| appUserModelId | LPWSTR | in | Windows ストアアプリのアプリケーションユーザーモデル ID。 |
| arguments | LPWSTR | in | 省略可能な、アプリ固有の引数文字列へのポインター。 |
| options | ACTIVATEOPTIONS | in | デザインモード、デバッグ、テストの各シナリオをサポートするために使用する、次のフラグのうち 1 つ以上。 AO_NONE (0x00000000)フラグが設定されていません。 AO_DESIGNMODE (0x00000001)アプリはデザインモード用にアクティブ化されるため、通常のウィンドウを作成できません。アプリのウィンドウの作成は、アクティブ化マネージャーを通じて確立されたサイトチェーン上でデザイナー指定のサービスと通信して必要なコンポーネントを読み込むデザインツールによって行う必要があります。これは、通常のアクティブ化時に表示されるスプラッシュ画面が表示されないことを意味する点に注意してください。 デザインモードを正常に使用するには、アプリのパッケージでデバッグモードを有効化する必要がある点に注意してください。 AO_NOERRORUI (0x00000002)アプリのアクティブ化に失敗した場合でもエラーダイアログを表示しません。 AO_NOSPLASHSCREEN (0x00000004)アプリのアクティブ化時にアプリのスプラッシュ画面を表示しません。このフラグを使用する場合は、アプリのパッケージでデバッグモードを有効化する必要があります。有効化しない場合、PLM は数秒後にアプリを終了します。 AO_PRELAUNCH (0x2000000)アプリはプリランチモードでアクティブ化されます。この値は Windows 10 以降でサポートされます。 |
| processId | DWORD* | out | このメソッドが正常に返されたときに、このコントラクトを満たすアプリインスタンスのプロセス ID を受け取る値へのポインター。 |
戻り値
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
指定された Windows ストアアプリを、ファイルコントラクト(Windows.File)に対してアクティブ化します。
| appUserModelId | LPWSTR | in | Windows ストアアプリのアプリケーションユーザーモデル ID。 |
| itemArray | IShellItemArray* | in | それぞれがファイルを表す Shell アイテムの配列へのポインター。この値は StorageItem オブジェクトの VectorView に変換され、FileActivatedEventArgs を通じてアプリに渡されます。 |
| verb | LPWSTR | in | itemArray で指定されたファイルに適用される動詞(verb)。 |
| processId | DWORD* | out | このメソッドが正常に返されたときに、このコントラクトを満たすアプリインスタンスのプロセス ID を受け取る値へのポインター。 |
戻り値
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
指定された Windows ストアアプリを、プロトコルコントラクト(Windows.Protocol)に対してアクティブ化します。
| appUserModelId | LPWSTR | in | Windows ストアアプリのアプリケーションユーザーモデル ID。 |
| itemArray | IShellItemArray* | in | 単一の Shell アイテムからなる配列へのポインター。配列の最初のアイテムは Uri オブジェクトに変換され、ProtocolActivatedEventArgs を通じてアプリに渡されます。配列内の最初の要素を除くアイテムはすべて無視されます。 |
| processId | DWORD* | out | このメソッドが正常に返されたときに、このコントラクトを満たすアプリインスタンスのプロセス ID を受け取る値へのポインター。 |
戻り値
このメソッドが成功すると、S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IApplicationActivationManager "{2E941141-7F97-4756-BA1D-9DECDE894A3D}" #usecom global IApplicationActivationManager IID_IApplicationActivationManager "{45BA127D-10A8-46EA-8AB7-56EA9078943C}" #comfunc global IApplicationActivationManager_ActivateApplication 3 wstr,wstr,int,var #comfunc global IApplicationActivationManager_ActivateForFile 4 wstr,sptr,wstr,var #comfunc global IApplicationActivationManager_ActivateForProtocol 5 wstr,sptr,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IApplicationActivationManager "{2E941141-7F97-4756-BA1D-9DECDE894A3D}" #usecom global IApplicationActivationManager IID_IApplicationActivationManager "{45BA127D-10A8-46EA-8AB7-56EA9078943C}" #comfunc global IApplicationActivationManager_ActivateApplication 3 wstr,wstr,int,sptr #comfunc global IApplicationActivationManager_ActivateForFile 4 wstr,sptr,wstr,sptr #comfunc global IApplicationActivationManager_ActivateForProtocol 5 wstr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。