デスクトップ アプリからのトースト通知のアクティブ化

デスクトップ アプリ (パッケージ化された MSIX アプリ、スパース パッケージを使用してパッケージ ID を取得するアプリ、従来のパッケージ化されていないデスクトップ アプリを含む) は、Windows アプリと同様に対話型トースト通知を送信できます。 ただし、異なるアクティブ化スキームのために、いくつかの異なるデスクトップ アプリのオプションがあります。

この記事では、Windows 10 でトースト通知の送信に使用するためのオプションを一覧表示します。 すべてのオプションでは、以下が完全にサポートされています。

  • アクション センター内での保持
  • ポップアップとアクション センター内の両方からアクティブ化可能
  • EXE が実行されていないときにアクティブ化可能

すべてのオプション

次の表は、デスクトップ アプリ内のトーストをサポートするためのオプション、および対応するサポートされる機能を示しています。 この表を使用してシナリオに最適なオプションを選択します。

オプション 視覚化 アクション 入力 プロセス内でのアクティブ化
COM アクティベーター ✔️ ✔️ ✔️ ✔️
COM なし / Stub CLSID ✔️ ✔️

推奨されるオプション - COM アクティベーター

これは、デスクトップ アプリで使用できる推奨オプションであり、すべての通知機能をサポートしています。 "COM アクティベーター" について心配することはありません。以前に COM サーバーを記述したことがない場合でも、これを非常に簡単にするライブラリ C# および C++ アプリがあります。

視覚化 アクション 入力 プロセス内でのアクティブ化
✔️ ✔️ ✔️ ✔️

COM アクティベーター オプションでは、アプリで次の通知テンプレートとライセンス認証の種類を使用できます。

テンプレートとライセンス認証の種類 MSIX/スパース パッケージ 従来のデスクトップ
ToastGeneric フォアグラウンド ✔️ ✔️
ToastGeneric バックグラウンド ✔️ ✔️
ToastGeneric プロトコル ✔️ ✔️
レガシ テンプレート ✔️

注意

COM アクティベーターを既存の MSIX/スパース パッケージ アプリに追加すると、フォアグラウンド/バックグラウンドおよび従来の通知のアクティブ化により、コマンド ラインではなく COM アクティベーターがアクティブ化されます。

このオプションを使用する方法については、「デスクトップ C# アプリからのローカル トースト通知の送信」または「Win32 C++ WRL アプリからのローカル トースト通知の送信」を参照してください。

代替オプション - COM なし / Stub CLSID

これは、COM アクティベーターを実装できない場合の代替オプションです。 ただし、入力サポート (トーストでのテキスト ボックス) やプロセス内でのアクティブ化など、いくつかの機能が犠牲になります。

視覚化 アクション 入力 プロセス内でのアクティブ化
✔️ ✔️

このオプションでは、従来のデスクトップをサポートする場合、次に示すように、使用できる通知テンプレートとライセンス認証の種類がはるかに制限されます。

テンプレートとライセンス認証の種類 MSIX/スパース パッケージ 従来のデスクトップ
ToastGeneric フォアグラウンド ✔️
ToastGeneric バックグラウンド ✔️
ToastGeneric プロトコル ✔️ ✔️
レガシ テンプレート ✔️

パッケージ化された MSIX アプリとスパース パッケージを使用するアプリの場合は、UWP アプリのようにトースト通知を送信するだけです。 ユーザーがトーストをクリックすると、アプリは、トーストで指定した起動引数でコマンド ラインから起動されます。

従来のデスクトップ アプリでは、トーストを送信してショートカットで CLSID を指定できるように、AUMID を設定します。 ランダムな GUID を指定できます。 COM サーバー/アクティベーターを追加しないでください。 "stub" COM CLSID を追加することで、アクション センターで通知が保持されます。 スタブ CLSID は他のトーストのアクティブ化を中断するため、プロトコルのアクティブ化のトーストのみを使用できる点に注意してください。 そのため、プロトコルのアクティブ化をサポートするようにアプリを更新し、トースト プロトコルで各自のアプリをアクティブ化する必要があります。

リソース