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

パッケージ化された Win32 アプリとパッケージ化されていない Win32 アプリは、UWP アプリと同様に対話型トースト通知を送信できます。 これには、パッケージ アプリ (「パッケージ化された WinUI 3 デスクトップ アプリの 新しいプロジェクトを作成する」を参照)、外部の場所でのパッケージ アプリ (「外部の場所で パッケージ化してパッケージ ID を付与する」を参照)、パッケージ化されていないアプリ (「パッケージ化されていない WinUI 3 デスクトップ アプリの 新しいプロジェクトを作成する」を参照) が含まれます。

ただし、パッケージ化されていない Win32 アプリには、いくつかの特別な手順があります。 これは、さまざまなアクティブ化スキームと、実行時にパッケージ ID が不足しているためです。

このトピックでは、Windows 10 でトースト通知を送信するためのオプションを示します。 すべてのオプションが完全にサポートされています...

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

すべてのオプション

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

オプション ビジュアル アクション 入力 インプロセスのアクティブ化
COM アクティベーター ✔️ ✔️ ✔️ ✔️
COM/スタブ CLSID なし ✔️ ✔️

優先オプション - COM アクティベーター

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

ビジュアル アクション 入力 インプロセスのアクティブ化
✔️ ✔️ ✔️ ✔️

COM アクティベーター オプションを使用すると、アプリで次の通知テンプレートとアクティブ化の種類を使用できます。

テンプレートとアクティブ化の種類 パッケージに含まれる 非パッケージ
ToastGeneric Foreground ✔️ ✔️
ToastGeneric の背景 ✔️ ✔️
ToastGeneric プロトコル ✔️ ✔️
レガシ テンプレート ✔️

Note

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

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

代替オプション - COM/スタブ CLSID なし

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

ビジュアル アクション 入力 インプロセスのアクティブ化
✔️ ✔️

このオプションでは、デスクトップをサポートしている場合、以下に示すように、使用できる通知テンプレートとアクティブ化の種類がはるかに制限されます。

テンプレートとアクティブ化の種類 パッケージに含まれる 非パッケージ
ToastGeneric Foreground ✔️
ToastGeneric の背景 ✔️
ToastGeneric プロトコル ✔️ ✔️
レガシ テンプレート ✔️

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

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

リソース