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

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

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

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

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

すべてのオプション

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

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

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

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

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

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

テンプレートとライセンス認証の種類 パッケージに含まれる 非パッケージ
ToastGeneric フォアグラウンド ✔️ ✔️
ToastGeneric バックグラウンド ✔️ ✔️
ToastGeneric プロトコル ✔️ ✔️
レガシ テンプレート ✔️

注意

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

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

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

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

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

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

テンプレートとライセンス認証の種類 パッケージに含まれる 非パッケージ
ToastGeneric フォアグラウンド ✔️
ToastGeneric バックグラウンド ✔️
ToastGeneric プロトコル ✔️ ✔️
レガシ テンプレート ✔️

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

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

リソース