Настольное приложение для уведомлений о тостах в Windows 10

Я пытаюсь интегрировать некоторые функции Windows 10 в свое существующее приложение для рабочего стола Windows. Я немного застрял, интегрируя уведомления о тостах.
Используя пример уведомления о тосте (https://code.msdn.microsoft.com/windowsdesktop/sending-toast-notifications-71e230a2/Я смог реализовать код для отправки и скрытия уведомлений. Это также работает, когда пользователь нажимает на «активное» уведомление, в моем приложении вызывается обработчик событий.

Однако, как только уведомление «заархивировано» в «Центре действий», ничего не происходит, когда пользователь нажимает на мое уведомление. Как я могу реагировать на клики в таких ситуациях?

Спасибо за вашу помощь,

Lukas

8

Решение

Я разработал WinToast, библиотека, написанная на C ++ для легкой интеграции Windows Toast Notification. Я использовал его для интеграции уведомлений Toast в различные проекты, особенно с Qt Framework.

Нативное уведомление о тосте нуждается в некоторых функциях Com Основы которые доступны только в современной версии Windows (минимально поддерживаемый клиент: Windows 8).

Вот почему библиотека загружает все необходимые библиотеки динамически. Сделайте ваше приложение совместимым со старыми версиями Windows, используя WinToast. Прилагается пример, объясняющий, как использовать его в хранилище.

Чтобы показать тост, просто создайте шаблон и ваш собственный обработчик и запустите его:

WinToastHandlerExample* handler = new WinToastHandlerExample;
WinToastTemplate templ  = WinToastTemplate(WinToastTemplate::ImageWithTwoLines);
templ.setImagePath(L"imagepath");
templ.setTextField(L"firstline", 0);
templ.setTextField(L"secondline", 1);

if (!WinToast::instance()->showToast(templ, handler)) {
std::wcout << L"Could not launch your toast notification!";
}
11

Другие решения

Обновленная документация для Windows 10 описывает, как использовать Action Center (и интерактивные тосты) из приложения Win32: https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop

По сути, вы должны использовать COM-сервер. Событие Activated в самом ToastNotification является событием во время выполнения … бесполезно, если ваша программа была закрыта, а пользователь нажимает на ваш тост из Action Center. Таким образом, Activated срабатывает, только если пользователь щелкает тост, когда он появляется впервые. Он НЕ срабатывает, когда пользователь щелкает тост из Центра поддержки. Для этого и нужен COM-сервер (или для чего нужен метод OnActivation в приложениях UWP).

4

Этот образец для Windows 8; Центр действий в Windows 10 Tech Preview является новым, и пока нет ни одного SDK для использования вами каких-либо новых функций.

2
По вопросам рекламы [email protected]