Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När systemet eller en annan app startar din app aktiveras den. Beroende på hur appen startas varierar aktiveringstyp. Den här artikeln beskriver hur du hanterar olika aktiveringsscenarier i en Windows App SDK skrivbordsapp.
Aktiveringsöversikt
Windows App SDK tillhandahåller en omfattande aktiveringsmodell via Microsoft.Windows. AppLifecycle-namnområde. Du använder AppInstance.GetActivatedEventArgs för att hämta aktiveringsinformation när som helst.
Vanliga aktiveringstyper är:
| Aktiveringstyp | Scenario |
|---|---|
Launch |
Användaren väljer apppanelen eller genvägen |
File |
Användaren öppnar en fil som är associerad med appen |
Protocol |
Ett URI-schema som är registrerat i appen anropas |
StartupTask |
Appen är konfigurerad för att starta vid användarinloggning |
PushNotification |
Appen aktiveras av en AppNotification (via AppNotificationManager) |
Important
Windows App SDK-skrivbordsappar använder Microsoft.Windows.AppLifecycle-API:er för avancerad aktivering. Metoden Microsoft.UI.Xaml.Application.OnLaunched anropas fortfarande för XAML-baserade appar, men den tillhandahåller inte alla aktiveringstyper. Se AppInstance.GetActivatedEventArgs() för den fullständiga aktiveringskontexten.
Hantera aktivering vid start
Den vanligaste aktiveringen är en standardstart. Åsidosätt OnLaunched i din App.xaml.cs:
using Microsoft.UI.Xaml;
public partial class App : Application
{
private Window? m_window;
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
m_window = new MainWindow();
m_window.Activate();
}
}
// MainWindow is the window class generated by the WinUI 3 project
// template (MainWindow.xaml / MainWindow.xaml.cs).
public partial class MainWindow : Window
{
}
Hantera omfattande aktiveringstyper
Om du vill svara på fil-, protokoll- eller andra aktiveringstyper kontrollerar du AppInstance.GetActivatedEventArgs() tidigt i appstarten. En vanlig metod är att kontrollera i OnLaunched eller i din Main-metod:
using Microsoft.UI.Xaml;
using Microsoft.Windows.AppLifecycle;
public partial class App : Application
{
private Window? m_window;
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
var activatedArgs = AppInstance.GetCurrent().GetActivatedEventArgs();
m_window = new MainWindow();
switch (activatedArgs.Kind)
{
case ExtendedActivationKind.File:
var fileArgs = activatedArgs.Data as
Windows.ApplicationModel.Activation.IFileActivatedEventArgs;
if (fileArgs != null)
{
// Navigate to a page that handles the file
// fileArgs.Files contains the list of activated files
}
break;
case ExtendedActivationKind.Protocol:
var protocolArgs = activatedArgs.Data as
Windows.ApplicationModel.Activation.IProtocolActivatedEventArgs;
if (protocolArgs != null)
{
// Navigate based on the URI
// protocolArgs.Uri contains the activation URI
}
break;
default:
// Standard launch — navigate to home page
break;
}
m_window.Activate();
}
}
// MainWindow is the window class generated by the WinUI 3 project
// template (MainWindow.xaml / MainWindow.xaml.cs).
public partial class MainWindow : Window
{
}
Registrera typer av aktivering
Hur du registrerar dig för fil- eller protokollaktivering beror på om din app är paketerad (MSIX) eller uppackad.
Paketerade appar
Registrera associationerna i appmanifestet:
Filtypsassociation (i Package.appxmanifest):
<Extensions>
<uap:Extension Category="windows.fileTypeAssociation">
<uap:FileTypeAssociation Name="myfiletype">
<uap:SupportedFileTypes>
<uap:FileType>.myext</uap:FileType>
</uap:SupportedFileTypes>
</uap:FileTypeAssociation>
</uap:Extension>
</Extensions>
Protokollkoppling:
<Extensions>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="myapp" />
</uap:Extension>
</Extensions>
Information om startaktivering finns i Konfigurera din app så att den startar vid inloggning.
Opacketerade appar
Uppackade appar (till exempel en vanlig WPF- eller Win32-app med hjälp av Windows App SDK) har inget manifest, så du registrerar samma aktiveringstyper i kod vid start med hjälp av statiska metoder på Microsoft.Windows.AppLifecycle.ActivationRegistrationManager. Registreringar är per användare och bevaras mellan lanseringar, så det är säkert att anropa detta varje gång din app startar.
using Microsoft.Windows.AppLifecycle;
// Register a protocol (URI scheme)
ActivationRegistrationManager.RegisterForProtocolActivation(
"myapp", // scheme
string.Empty, // logo (optional)
"My App", // display name
string.Empty); // exePath — empty registers the current executable
// Register a file type
ActivationRegistrationManager.RegisterForFileTypeActivation(
new[] { ".myext" }, // supported file extensions
string.Empty, // logo (optional)
"My App", // display name
new[] { "open" }, // supported verbs
string.Empty); // exePath — empty registers the current executable
Om du vill ta bort en registrering (till exempel under avinstallationen) anropar du matchningen UnregisterForProtocolActivation eller UnregisterForFileTypeActivation metoden.
Både paketerade och uppackade appar hämtar aktiveringsargument på samma sätt med hjälp av AppInstance.GetCurrent().GetActivatedEventArgs(), som du ser tidigare i den här artikeln. Mer information finns i Omfattande aktivering med appens livscykel-API.
Hantera aktivering i en instans som är igång
Om appen redan körs när en andra aktivering sker kan du omdirigera den till den befintliga instansen med hjälp av API:erna för flera instanser. Mer information om hur du registrerar nycklar och omdirigering av aktiveringar finns i Appar med flera instanser .
Skillnader från UWP-aktivering
| Feature | UWP | Windows App SDK (Desktop) |
|---|---|---|
| Startpunkt för aktivering |
OnActivated, OnFileActivated, OnLaunched åsidosättningar |
AppInstance.GetActivatedEventArgs() + OnLaunched |
| Tidigare körningstillstånd | LaunchActivatedEventArgs.PreviousExecutionState |
Tillhandahålls inte av systemet – implementera din egen |
| Stöd för förhandsstart | Ja (anmäl dig) | No |
| Namespace | Windows.ApplicationModel.Activation |
Microsoft.Windows.AppLifecycle (med Windows.ApplicationModel.Activation datatyper) |
Relaterat innehåll
Windows developer