Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Amikor a rendszer vagy egy másik alkalmazás elindítja az alkalmazást, aktiválja azt. Az alkalmazás indításától függően az aktiválás típusa változó. Ez a cikk azt ismerteti, hogyan kezelheti a különböző aktiválási forgatókönyveket egy Windows App SDK asztali alkalmazásban.
Aktiválás áttekintése
A Windows App SDK gazdag aktiválási modellt biztosít a Microsoft.Windows.AppLifecycle névtéren keresztül. Az AppInstance.GetActivatedEventArgs használatával bármikor lekérheti az aktiválás részleteit.
A gyakori aktiválási típusok a következők:
| Aktiválás típusa | Scenario |
|---|---|
Launch |
A felhasználó kiválasztja az alkalmazás csempét vagy parancsikont |
File |
A felhasználó megnyitja az alkalmazáshoz társított fájlt |
Protocol |
Az alkalmazáshoz regisztrált URI-séma meghívása |
StartupTask |
Az alkalmazás úgy van konfigurálva, hogy a felhasználói bejelentkezéskor induljon el |
PushNotification |
Az alkalmazás egy AppNotification által aktiválódik (a következőn keresztül: AppNotificationManager) |
Important
A Windows App SDK asztali alkalmazásai a Microsoft.Windows.AppLifecycle API-kat használják a speciális aktiváláshoz. A Microsoft.UI.Xaml.Application.OnLaunched metódust továbbra is XAML-alapú alkalmazásokhoz hívjuk meg, de nem biztosít minden aktiválási típust. A teljes aktiválási kontextusért ellenőrizze a(z) AppInstance.GetActivatedEventArgs() elemet.
Indítási aktiválás kezelése
A leggyakoribb aktiválás egy szabványos indítás. A(z) OnLaunched felülbírálása itt: 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
{
}
Gazdag aktiválási típusok kezelése
A fájl-, protokoll- vagy más aktiválási típusokra való reagáláshoz ellenőrizze a(z) AppInstance.GetActivatedEventArgs() elemet az alkalmazás indításának korai szakaszában. Tipikus megközelítés, hogy itt végzi el az ellenőrzést: OnLaunched, vagy a(z) Main metódusban:
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
{
}
Regisztrálás aktiválási típusokra
A fájl- vagy protokollaktiválásra való regisztráció attól függ, hogy az alkalmazás csomagolva van-e (MSIX) vagy kicsomagolva.
Csomagolt alkalmazások
A társítások regisztrálása az alkalmazásjegyzékben:
Fájltípus társítása (a következőben 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>
Protokoll társítás:
<Extensions>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="myapp" />
</uap:Extension>
</Extensions>
Az indítási aktiválásról további információt az alkalmazás bejelentkezéskor történő indításának konfigurálása című témakörben talál.
Csomagolatlan alkalmazások
A csomagolatlan alkalmazások (például egy egyszerű WPF vagy a Windows App SDK használó Win32-alkalmazás) nem rendelkeznek jegyzékfájllal, ezért a statikus metódusok Microsoft.Windows.AppLifecycle.ActivationRegistrationManagerhasználatával indításkor ugyanazokat az aktiválási típusokat regisztrálja a kódban. A regisztrációk felhasználónként vannak, és az indítások során is megmaradnak, így nyugodtan meghívhatja ezt minden alkalommal, amikor az alkalmazás elindul.
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
Regisztráció eltávolításához (például az eltávolítás során) hívja meg a megfelelőt UnregisterForProtocolActivation vagy UnregisterForFileTypeActivation metódust.
A csomagolt és a csomagolatlan alkalmazások is ugyanúgy kérik le az aktiválási argumentumokat, AppInstance.GetCurrent().GetActivatedEventArgs()a jelen cikkben korábban bemutatott módon. További részletekért lásd: Gazdag aktiválás az alkalmazás életciklusának API-jával.
Aktiválás kezelése egy futó példányban
Ha az alkalmazás már fut második aktiváláskor, átirányíthatja a meglévő példányra a többpéldányos API-k használatával. A kulcsok regisztrálásával és az aktiválások átirányításával kapcsolatos részletekért tekintse meg a többpéldányos alkalmazásokat .
Különbségek az UWP-aktiválástól
| Funkció | UWP | Windows App SDK (asztali gépekhez) |
|---|---|---|
| Aktiválási kiindulási pont |
OnActivated, OnFileActivated, OnLaunched felülírások |
AppInstance.GetActivatedEventArgs() + OnLaunched |
| Előző végrehajtási állapot | LaunchActivatedEventArgs.PreviousExecutionState |
A rendszer nem biztosítja – saját implementálás |
| Bevezetés előtti támogatás | Igen (bejelentkezés) | No |
| Namespace | Windows.ApplicationModel.Activation |
Microsoft.Windows.AppLifecycle (adattípusokkal Windows.ApplicationModel.Activation ) |
Kapcsolódó tartalom
Windows developer