Alkalmazásaktiválás Windows App SDK asztali alkalmazásokhoz

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 )