一部のWindows10機能を既存のWindowsデスクトップアプリケーションに統合しようとしています。 ToastNotificationsの統合に少し行き詰まっています。トースト通知の例を使用して( https://code.msdn.Microsoft.com/windowsdesktop/sending-toast-notifications-71e230a2/ )通知を送信および非表示にするコードを実装できました。また、ユーザーが「アクティブ」通知をクリックすると、アプリケーションのイベントハンドラーが呼び出されることも機能します。
ただし、通知が「アクションセンター」で「アーカイブ」されるとすぐに、ユーザーが通知をクリックしても何も起こりません。このような状況でクリックにどのように反応できますか?
ご協力いただきありがとうございます、
ルカス
私は WinToast を開発しました。これは、Windows ToastNotificationを簡単に統合するためにC++で記述されたライブラリです。私はこれを使用して、Toast通知をさまざまなプロジェクト、特にQtFrameworkに統合しました。
ネイティブのトースト通知には、 Com Fundamentals のいくつかの機能が必要です。これらの機能は、最新バージョンのWindows(サポートされている最小クライアント:Windows 8)でのみ使用できます。
そのため、ライブラリは必要なすべてのライブラリを動的にロードします。 WinToastを使用して、アプリケーションを古いバージョンのWindowsと互換性のあるものにします。リポジトリでの使用方法を説明する添付の例があります。
トーストを表示するには、テンプレートとカスタムハンドラーを作成し、起動します。
WinToastHandlerExample* handler = new WinToastHandlerExample;
WinToastTemplate templ = WinToastTemplate(WinToastTemplate::ImageWithTwoLines);
templ.setImagePath(L"C:/example.png");
templ.setTextField(L"title", WinToastTemplate::FirstLine);
templ.setTextField(L"subtitle", WinToastTemplate::SecondLine);
if (!WinToast::instance()->showToast(templ, handler)) {
std::wcout << L"Could not launch your toast notification!";
}
Win32アプリからアクションセンター(およびインタラクティブトースト)を使用する方法を説明するWindows 10の更新されたドキュメントがあります: https://docs.Microsoft.com/en-us/windows/uwp/design/Shell/tiles-および-notifications/send-local-toast-desktop
基本的には、COMサーバーを使用する必要があります。 ToastNotification自体のActivatedイベントはランタイムイベントです...プログラムが閉じられ、ユーザーがアクションセンターからトーストをクリックした場合は役に立ちません。したがって、Activatedは、トーストが最初にポップアップしたときにユーザーがトーストをクリックした場合にのみ起動します。ユーザーがアクションセンターからトーストをクリックしても起動しません。これがCOMサーバーの目的です(またはUWPアプリのOnActivatedメソッドの目的です)。
そのサンプルはWindows8用です。 Windows 10 Tech Previewのアクションセンターは新しく、新しい機能を使用するためのSDKはまだありません。