Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Gdy system lub inna aplikacja uruchamia aplikację, aktywuje ją. W zależności od sposobu uruchamiania aplikacji rodzaj aktywacji różni się. W tym artykule wyjaśniono, jak obsługiwać różne scenariusze aktywacji w aplikacji klasycznej Zestaw SDK do aplikacji systemu Windows.
Omówienie aktywacji
Zestaw SDK do aplikacji systemu Windows udostępnia bogaty model aktywacji za pomocą przestrzeni nazw Microsoft.Windows.AppLifecycle. Używasz klasy AppInstance.GetActivatedEventArgs do pobierania szczegółów aktywacji w dowolnym momencie.
Typowe rodzaje aktywacji obejmują:
| Rodzaj aktywacji | Scenario |
|---|---|
Launch |
Użytkownik wybiera kafelek lub skrót aplikacji |
File |
Użytkownik otwiera plik skojarzony z aplikacją |
Protocol |
Zostaje wywołany schemat URI zarejestrowany w aplikacji |
StartupTask |
Aplikacja jest skonfigurowana do uruchamiania przy logowaniu użytkownika |
PushNotification |
Aplikacja jest aktywowana przez element AppNotification (za pośrednictwem AppNotificationManager) |
Ważna
Aplikacje klasyczne Zestaw SDK do aplikacji systemu Windows używają interfejsów API Microsoft.Windows.AppLifecycle do zaawansowanej aktywacji. Metoda Microsoft.UI.Xaml.Application.OnLaunched jest nadal wywoływana dla aplikacji opartych na języku XAML, ale nie zapewnia wszystkich rodzajów aktywacji. Sprawdź w AppInstance.GetActivatedEventArgs() pełny kontekst aktywacji.
Obsługa aktywacji uruchamiania
Najczęstszą aktywacją jest standardowe uruchomienie. Zastąp OnLaunched w swoim 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
{
}
Obsługa rozbudowanych rodzajów aktywacji
Aby reagować na pliki, protokół lub inne rodzaje aktywacji, sprawdź AppInstance.GetActivatedEventArgs() wcześnie podczas uruchamiania aplikacji. Typowym podejściem jest sprawdzenie w OnLaunched lub w metodzie Main:
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
{
}
Rejestrowanie pod kątem rodzajów aktywacji
Sposób rejestrowania w celu aktywacji pliku lub protokołu zależy od tego, czy aplikacja jest spakowana (MSIX), czy rozpakowana.
Spakowane aplikacje
Zarejestruj skojarzenia w manifeście aplikacji:
Skojarzenie typu pliku (w 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>
Powiązanie protokołu:
<Extensions>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="myapp" />
</uap:Extension>
</Extensions>
Aby uzyskać informacje na temat aktywacji uruchamiania, zobacz Konfigurowanie aplikacji do uruchamiania przy logowaniu.
Rozpakowane aplikacje
Aplikacje rozpakowane (na przykład zwykła aplikacja WPF lub Win32 korzystająca z Zestaw SDK do aplikacji systemu Windows) nie mają manifestu, dlatego rejestrujesz te same rodzaje aktywacji w kodzie podczas uruchamiania przy użyciu metod statycznych w witrynie Microsoft.Windows.AppLifecycle.ActivationRegistrationManager. Rejestracje są dla poszczególnych użytkowników i utrwalane podczas uruchamiania, więc można bezpiecznie wywołać tę funkcję za każdym razem, gdy aplikacja się uruchamia.
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
Aby usunąć rejestrację (na przykład podczas odinstalowywania), wywołaj odpowiednią metodę UnregisterForProtocolActivation lub UnregisterForFileTypeActivation.
Zarówno aplikacje pakietowane, jak i niepakietowane pobierają argumenty aktywacji w ten sam sposób, używając AppInstance.GetCurrent().GetActivatedEventArgs(), jak pokazano wcześniej w tym artykule. Aby uzyskać więcej szczegółów, zobacz Rozbudowana aktywacja przy użyciu interfejsu API cyklu życia aplikacji.
Obsługa aktywacji w uruchomionym wystąpieniu
Jeśli aplikacja jest już uruchomiona, gdy nastąpi druga aktywacja, możesz przekierować ją do już działającej instancji za pomocą interfejsów API obsługujących wiele wystąpień. Aby uzyskać szczegółowe informacje na temat rejestrowania kluczy i przekierowywania aktywacji, zobacz Aplikacje wieloinstancyjne.
Różnice w porównaniu z aktywacją platformy UWP
| Funkcja | platforma UWP | Zestaw SDK do aplikacji systemu Windows (desktop) |
|---|---|---|
| Punkt uruchomienia aktywacji |
OnActivated, OnFileActivated, OnLaunched nadpisania |
AppInstance.GetActivatedEventArgs() + OnLaunched |
| Poprzedni stan wykonania | LaunchActivatedEventArgs.PreviousExecutionState |
Nie jest dostarczane przez system — zaimplementuj własne rozwiązanie |
| Wsparcie przed uruchomieniem | Tak (zgoda) | No |
| Namespace | Windows.ApplicationModel.Activation |
Microsoft.Windows.AppLifecycle (z typami Windows.ApplicationModel.Activation danych) |