2017-08-09 18 views
0

以下のリンクを使用して、勝利10アクションセンターからのトースト通知を処理しています。アクションセンターで複数のトースト通知を処理しますか?

https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/10/16/quickstart-handling-toast-activations-from-win32-apps-in-windows-10/」 トースト通知を処理するために、私たちはINotificationActivationCallbackの「Activate」APIを実装しました。

しかし、アクションセンターとして複数の通知が含まれています。通知を一意に識別する方法。私たちは別のnotification.Activate APIで異なる操作を実行する必要があります "invokedArgs"パラメータは常にNULLです。

答えて

1

はい、問題は解決しました。アクションセンターで引数argを処理するには、トースト通知XMLを作成する際に起動引数を渡す必要があります。例えば、 。

上記の例のように、トーストヘッダーに値「invoke arguments」を指定してinvoke引数の起動を渡しました。アクションセンターからのトースト通知をクリックするたびに、「アクティブ化」APIが呼び出されます。 「Activate function invoke args」で同じパラメーターを受け取ります。これで、invoke arg値を比較してアクションを実行できます。以下は参考例とリンクです。

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/

関連する問題