Freigeben über


Verwenden von App-Benachrichtigungen mit einer WinForms-App

Eine App-Benachrichtigung ist ein UI-Popup, das außerhalb des Fensters Ihrer App angezeigt wird und dem Benutzer zeitnah Informationen oder Aktionen liefert. Benachrichtigungen können rein informativ sein, ihre App beim Klicken starten oder eine Hintergrundaktion auslösen, ohne ihre App in den Vordergrund zu bringen.

Screenshot einer App-Benachrichtigung

Dieser Artikel führt Sie durch die Schritte zum Erstellen und Senden einer App-Benachrichtigung aus einer WinForms-App und behandelt dann die Aktivierung, wenn der Benutzer damit interagiert. In diesem Artikel werden die APIs Windows App SDKMicrosoft.Windows.AppNotifications verwendet.

Eine Übersicht über App-Benachrichtigungen und Anleitungen für andere Frameworks finden Sie in der Übersicht über App-Benachrichtigungen.

In diesem Artikel werden lokale Benachrichtigungen behandelt. Informationen zum Übermitteln von Benachrichtigungen von einem Clouddienst finden Sie unter Pushbenachrichtigungen.

Von Bedeutung

Benachrichtigungen für Apps mit erhöhten Rechten (Administrator) werden derzeit nicht unterstützt.

Voraussetzungen

  • Eine WinForms-App für .NET 6 oder höher
  • Das Windows App SDK NuGet-Paket (Microsoft.WindowsAppSDK)

Einrichten Ihres Projekts

Stellen Sie in der Projektdatei (.csproj) sicher, dass die TargetFramework ein Windows Zielframework enthält:

<TargetFramework>net9.0-windows10.0.19041.0</TargetFramework>

Fügen Sie das Windows App SDK NuGet-Paket hinzu:

<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.7.250310001" />

Fügen Sie für entpackte Apps Folgendes hinzu:

<WindowsPackageType>None</WindowsPackageType>

Registrieren für App-Benachrichtigungen

In Program.cs, registrieren Sie sich für Benachrichtigungen vor dem Aufrufen Application.Run(). Sie müssen den NotificationInvoked-Handler registrieren, bevor Sie Register aufrufen.

Program.cs

using Microsoft.Windows.AppNotifications;

namespace WinFormsNotifications;

static class Program
{
    [STAThread]
    static void Main()
    {
        // Register the notification handler before calling Register
        AppNotificationManager.Default.NotificationInvoked += OnNotificationInvoked;
        AppNotificationManager.Default.Register();

        ApplicationConfiguration.Initialize();
        Application.Run(new Form1());

        // Unregister when the app exits
        AppNotificationManager.Default.Unregister();
    }

    private static void OnNotificationInvoked(
        AppNotificationManager sender,
        AppNotificationActivatedEventArgs args)
    {
        // NotificationInvoked is raised on a background thread,
        // so use Control.Invoke to marshal to the UI thread
        var form = Application.OpenForms.Count > 0 
            ? Application.OpenForms[0] as Form1 
            : null;

        form?.Invoke(() =>
        {
            // Parse args.Argument to determine what action to take.
            // args.Argument contains the arguments from the notification
            // or button that was clicked, as key=value pairs separated
            // by '&', for example "action=reply&conversationId=9813".
        });
    }
}

Hinweis

Bei entpackten Apps richtet Register() automatisch die COM-Serverregistrierung ein, mit der Windows ihre App starten kann, wenn auf eine Benachrichtigung geklickt wird. Sie müssen die COM-Aktivierung oder eine AUMID nicht manuell konfigurieren.

Senden einer App-Benachrichtigung

Verwenden Sie AppNotificationBuilder , um Benachrichtigungsinhalte und AppNotificationManager.Show zu erstellen, um eine Benachrichtigung aus Ihrem Formular zu senden.

Form1.cs

using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;

private void SendNotification()
{
    var notification = new AppNotificationBuilder()
        .AddArgument("action", "viewConversation")
        .AddArgument("conversationId", "9813")
        .AddText("Andrew sent you a picture")
        .AddText("Check this out, The Enchantments in Washington!")
        .BuildNotification();

    AppNotificationManager.Default.Show(notification);
}

Informationen zum Hinzufügen von Schaltflächen, Bildern, Eingaben und anderen umfangreichen Inhalten zu Ihren Benachrichtigungen finden Sie unter App-Benachrichtigungsinhalte.

App-Paketeinrichtung

Bei entpackten WinForms-Apps Register() verarbeitet die COM-Registrierung automatisch. Für verpackte Apps (MSIX) müssen Sie Erweiterungen zu Ihrer Package.appxmanifestApp hinzufügen. Informationen zu den erforderlichen Manifesteinträgen finden Sie unter Packaged app setup im WPF Artikel.