2015-02-19 28 views
6

Próbuję zintegrować niektóre funkcje systemu Windows 10 z istniejącą aplikacją pulpitu Windows. Trochę utknąłem integrując Powiadomienia Toast. Korzystanie z przykładu powiadomienia o tostach (https://code.msdn.microsoft.com/windowsdesktop/sending-toast-notifications-71e230a2/) Udało mi się zaimplementować kod do wysyłania i ukrywania powiadomień. Działa również, że gdy użytkownik kliknie na "aktywne" powiadomienie, wywoływana jest procedura obsługi zdarzeń w mojej aplikacji.Windows 10 Powiadomienia o toastach Aplikacja komputerowa

Jednak, gdy tylko powiadomienie zostanie "zarchiwizowane" w "Centrum akcji", nic się nie stanie, gdy użytkownik kliknie na moje powiadomienie. Jak reagować na kliknięcia w takich sytuacjach?

Dzięki za pomoc,

Lukas

Odpowiedz

2

To próbka jest dla Windows 8; Centrum akcji w Windows 10 Tech Preview jest nowe i nie ma jeszcze SDK, aby móc korzystać z jakichkolwiek nowych funkcji.

3

Jest aktualizowana dokumentacja dla Windows 10 opisujące jak korzystać z Centrum akcji (i interaktywne grzanki) z aplikacji Win32: https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop

Zasadniczo masz do korzystania z serwera COM. Zdarzenie aktywowane w samym ToastNotification jest zdarzeniem uruchomieniowym ... bezużyteczne, jeśli program został zamknięty, a użytkownik kliknie na toście z Action Center. W związku z tym aktywowane jest uruchamianie tylko wtedy, gdy użytkownik kliknie toastem po jego pierwszym wyskoczeniu. NIE uruchamia się, gdy użytkownik kliknie toast z Action Center. Właśnie do tego służy serwer COM (lub do czego służy metoda OnActivated w aplikacjach UWP).

8

Opracowałem WinToast, bibliotekę napisaną w C++ w celu łatwego zintegrowania systemu Windows Toast Notification. Użyłem go do integracji powiadomień Toast w różnych projektach, zwłaszcza z Qt Framework.

Natywne powiadomienie o toastach wymaga niektórych funkcji urządzenia Com Fundamentals, które są dostępne tylko w nowocześniejszej wersji systemu Windows (minimalny obsługiwany klient: Windows 8).

Dlatego biblioteka ładuje dynamicznie wszystkie wymagane biblioteki. Dostosuj swoją aplikację do starszych wersji systemu Windows przy użyciu WinToast. Istnieje załączony przykład wyjaśniający, jak z niego korzystać w repozytorium.

Aby pokazać toast, wystarczy utworzyć szablon i niestandardowej obsługi i uruchom go:

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!"; 
} 
+0

Wygląda schludny ale coulndn't I to działało po readme github. Wszystkie sprawdzenia są przekazywane (nawet ostatni komunikat o błędzie "Nie można uruchomić ..." nie jest wyświetlany), ale nie widać toastu i wywoływana jest funkcja 'toastFailed()' mojego handlera. Czy musisz ustawić dodatkowe konfiguracje w swoim projekcie? – PhilLab

+0

Witam, czy mógłbyś sprawdzić ostatni stan? Dodajemy nowy projekt do Visual Studio i niektóre modyfikacje do przykładu z Qt. Działa dobrze dla nas w Windows 8, 8.1 i 10 – mohabouje

+0

Dzięki za aktualizację. Próbowałem go ponownie i miałem pewne problemy. Chociaż problem z Githubem prawdopodobnie nie jest właściwym miejscem, ja [otworzyłem jeden] (https://github.com/mohabouje/WinToast/issues/20), aby ułatwić ocenę – PhilLab