Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cuando el sistema u otra aplicación inicia tu aplicación, la activa. Dependiendo de cómo se inicie la aplicación, el tipo de activación varía. En este artículo se explica cómo controlar diferentes escenarios de activación en una aplicación de escritorio de SDK de Aplicaciones para Windows.
Resumen de activación
SDK de Aplicaciones para Windows proporciona un completo modelo de activación a través del espacio de nombres Microsoft.Windows.AppLifecycle. Use AppInstance.GetActivatedEventArgs para recuperar los detalles de activación en cualquier momento.
Entre los tipos de activación comunes se incluyen:
| Tipo de activación | Escenario |
|---|---|
Launch |
El usuario selecciona el icono de la aplicación o el acceso directo |
File |
El usuario abre un archivo asociado a la aplicación |
Protocol |
Se invoca un esquema de URI registrado en la aplicación |
StartupTask |
La aplicación está configurada para iniciarse en el inicio de sesión del usuario. |
PushNotification |
La aplicación se activa mediante una AppNotification (a través de AppNotificationManager) |
Importante
Las aplicaciones de escritorio de SDK de Aplicaciones para Windows utilizan las API Microsoft.Windows.AppLifecycle para la activación avanzada. Se sigue llamando al método Microsoft.UI.Xaml.Application.OnLaunched para las aplicaciones basadas en XAML, pero no proporciona todos los tipos de activación. Consulte AppInstance.GetActivatedEventArgs() para ver el contexto de activación completo.
Gestionar la activación del inicio
La activación más común es un lanzamiento estándar. Anule OnLaunched en su 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
{
}
Controlar tipos de activación enriquecida
Para responder a la activación por archivo, protocolo u otros tipos de activación, compruebe AppInstance.GetActivatedEventArgs() al inicio de la aplicación. Un enfoque típico consiste en comprobar en OnLaunched o en su método 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
{
}
Registro para los tipos de activación
La forma en que se registra para la activación de archivos o protocolos depende de si la aplicación está empaquetada (MSIX) o desempaquetada.
Aplicaciones empaquetadas
Registre las asociaciones en el manifiesto de la aplicación:
Asociación de tipo de archivo (en 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>
Asociación de protocolos:
<Extensions>
<uap:Extension Category="windows.protocol">
<uap:Protocol Name="myapp" />
</uap:Extension>
</Extensions>
Para el inicio automático, consulte Configure la aplicación para que se inicie al iniciar sesión.
Aplicaciones sin empaquetar
Las aplicaciones sin empaquetar (por ejemplo, una aplicación de WPF sin formato o Win32 con el SDK de Aplicaciones para Windows) no tienen ningún manifiesto, por lo que se registran los mismos tipos de activación en el código en el inicio mediante los métodos estáticos en Microsoft.Windows.AppLifecycle.ActivationRegistrationManager. Los registros son por usuario y persisten entre ejecuciones, por lo que es seguro llamar a esto cada vez que se inicia la aplicación.
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
Para eliminar un registro (por ejemplo, durante la desinstalación), llame al método correspondiente UnregisterForProtocolActivation o UnregisterForFileTypeActivation.
Las aplicaciones empaquetadas y desempaquetadas recuperan argumentos de activación de la misma manera, mediante AppInstance.GetCurrent().GetActivatedEventArgs(), como se muestra anteriormente en este artículo. Para obtener más información, consulte Activación enriquecida con la API del ciclo de vida de la aplicación.
Controlar la activación en una instancia en ejecución
Si la aplicación ya se está ejecutando cuando se produce una segunda activación, puede redirigirla a la instancia existente mediante las API de varias instancias. Consulte Aplicaciones de instancias múltiples para más información sobre el registro de claves y la redirección de activaciones.
Diferencias con la activación de UWP
| Feature | UWP | SDK de Aplicaciones para Windows para escritorio |
|---|---|---|
| Punto de entrada de activación |
OnActivated, OnFileActivated, OnLaunched anulaciones |
AppInstance.GetActivatedEventArgs() + OnLaunched |
| Estado de ejecución anterior | LaunchActivatedEventArgs.PreviousExecutionState |
No proporcionado por el sistema: implemente su propio |
| Soporte técnico previo | Sí (participar) | No |
| Namespace | Windows.ApplicationModel.Activation |
Microsoft.Windows.AppLifecycle (con Windows.ApplicationModel.Activation tipos de datos) |