2017-08-09 2 views
0

Wir verwenden den unten stehenden Link, um die Toastbenachrichtigung von Action Center 10 zu bearbeiten.Handle Mehrere Toast-Benachrichtigung im Action Center?

"https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/10/16/quickstart-handling-toast-activations-from-win32-apps-in-windows-10/" Wir haben die "Activate" API von INotificationActivationCallback implementiert, um die Toastbenachrichtigung zu verarbeiten.

Aber als Action-Center gehören mehrere Benachrichtigungen. So identifizieren Sie die Benachrichtigung eindeutig wir müssen verschiedene Operationen auf verschiedenen Benachrichtigungen ausführen. API "InvokeArgs" Parameter aktivieren ist immer NULL.

Antwort

1

Ja, das Problem ist behoben. Um Aufrufargumente in Action Center zu behandeln, müssen Sie das Startargument übergeben, während Sie die Toast-Benachrichtigungs-XML erstellen. z.B.

Wie im obigen Beispiel haben wir den Start des Aufrufarguments mit dem Wert "Argumente aufrufen" im Toast-Header übergeben. Jetzt als "Activate" API wird aufgerufen, wenn der Benutzer auf Toast-Benachrichtigung von Action Center klicken wird. Sie erhalten den gleichen Parameter in "Aktiviere Funktionsaufrufargumente". Jetzt können Sie den invoke arg Wert vergleichen und die Aktion ausführen. Unten finden Sie das Referenzbeispiel und den Link.

HRESULT NotificationActivator::Activate(PCWSTR /*appUserModelId*/, PCWSTR invokedArgs, 
    const NOTIFICATION_USER_INPUT_DATA* data, ULONG count) 
{ 
    if (invokedArgs == nullptr) 
    { 
     // Start my app or just do nothing because COM started the app already. 
    } 
    else if (::wcscmp(invokedArgs, L"replyToComment") == 0) 
    { 
     ASSERT(count == 1); 
     ASSERT(::wcscmp(data[0].Key, L"replyToComment") == 0); 

     DoWorkToReply(data[0].Data); 
    } 

    return S_OK; 
} 

https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/10/16/quickstart-handling-toast-activations-from-win32-apps-in-windows-10/