Intégrer les applications packagées à Windows Share
Cet article explique comment intégrer des applications packagées à la fonctionnalité Windows Share. Les applications empaquetées avec MSIX ont une identité de package et sont prêtes à s'enregistrer en tant que cible Share. La fonctionnalité Share permet aux utilisateurs de partager du contenu d'une application à une autre. Une application packagée s'enregistre en tant que cible de partage afin de recevoir et de gérer les fichiers partagés au sein de l'application.
Qu'est-ce qu'une cible Share?
Cible Share est une fonctionnalité qui a été introduite dans Windows 8 et qui permet à une application de recevoir des données d'une autre application. Cible Share fonctionne comme un presse-papiers, mais avec un contenu dynamique.
Pour que l'enregistrement de la cible de partage par défaut fonctionne avec les applications Win32, l'application doit avoir d'une part une identité de package et d'autre part gérer les arguments de partage en tant que ShareTargetActivatedEventArgs, qui est un objet vivant provenant de l'application source. Ce n'est pas un contenu de mémoire statique qui est envoyé à l'application cible.
Remarque
Dans une application C++, utilisez l'API GetCurrentPackageFullName pour vérifier si l'application en cours a une identité de package. L'API renvoie le code d'erreur APPMODEL_ERROR_NO_PACKAGE
si elle ne fonctionne pas avec l'identité du package.
Prérequis
Pour prendre en charge ShareTargetActivatedEventArgs
, l'application doit cibler Windows 10, version 2004 (build 10.0.19041.0) ou ultérieure. Il s'agit de la version cible minimale pour la fonctionnalité.
Enregistrer en tant que à Share Target
Deux étapes sont nécessaires pour mettre en œuvre le contrat de partage dans votre application.
Ajoutez une extension de cible de partage à appxmanifest
Dans l'explorateur de solutions de Visual Studio, ouvrez le fichier package.appxmanifest
du projet Packaging de votre solution et ajoutez l'extension Share Target.
<Extensions>
<uap:Extension
Category="windows.shareTarget">
<uap:ShareTarget>
<uap:SupportedFileTypes>
<uap:SupportsAnyFileType />
</uap:SupportedFileTypes>
<uap:DataFormat>Bitmap</uap:DataFormat>
</uap:ShareTarget>
</uap:Extension>
</Extensions>
Ajoutez le format de données pris en charge par votre application à la configuration DataFormat
Dans ce cas, l'application prend en charge le partage d'images, c'est pourquoi le DataFormat
est défini sur Bitmap
.
Récupérer les arguments de l'événement Share
À partir de Windows 10, version 1809, les applications packagées peuvent appeler la méthode AppInstance.GetActivatedEventArgs pour récupérer certains types d'infos d'activation de l'application au cours du démarrage. Par exemple, vous pouvez appeler cette méthode pour obtenir des informations sur l'activation de l'application, qu'elle ait été déclenchée par l'ouverture d'un fichier, le clic sur un message toast interactif ou l'utilisation d'un protocole enregistré
Cependant, les informations d’activation ShareTargetActivatedEventArgs sont prises en charge uniquement sur Windows 10 version 2004 et les versions ultérieures. Ainsi, l'application doit cibler les appareils dotés de cette version minimale spécifique.
Pour voir une application du Windows App SDK, consultez la méthode OnLaunched
dans l'application d'exemple Share Target.
Pour les autres applications packagées, dans la méthode Main
de l'application, vérifiez la présence de AppInstance.GetActivatedEventArgs
.
public static void Main(string[] cmdArgs)
{
...
if (isRunningWithIdentity())
{
var activationArgs = AppInstance.GetActivatedEventArgs();
if (activationArgs != null)
{
switch (activationArgs.Kind)
{
case ActivationKind.Launch:
HandleLaunch(activationArgs as LaunchActivatedEventArgs);
break;
case ActivationKind.ToastNotification:
HandleToastNotification(activationArgs as ToastNotificationActivatedEventArgs);
break;
case ActivationKind.ShareTarget:
HandleShareAsync(activationArgs as ShareTargetActivatedEventArgs);
break;
default:
HandleLaunch(null);
break;
}
}
}
}
Pour les autres applications packagées, dans la méthode de l'application, vérifiez la présence de .
Gérer les fichiers partagés
L'extrait de code suivant montre comment gérer les fichiers partagés dans une application packagée. L'extrait de code fait partie de la méthode HandleShareAsync
appelée lorsque l'application est activée en tant que cible de partage dans l'exemple précédent.
static async void HandleShareAsync(ShareTargetActivatedEventArgs args)
{
ShareOperation shareOperation = args.ShareOperation;
shareOperation.ReportStarted();
if (shareOperation.Data.Contains(
Windows.ApplicationModel.DataTransfer.StandardDataFormats.StorageItems))
{
try
{
IReadOnlyList<IStorageItem> items = await shareOperation.Data.GetStorageItemsAsync();
var file = (IStorageFile)items[0];
string path = file.Path;
var image = new ImageFile(path);
image.AddToCache();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
shareOperation.ReportCompleted();
// app launch code
}
Voir aussi
- Vue d’ensemble du déploiement du SDK d’application Windows
- Créer votre premier projet WinUI 3
- Migrer d’UWP vers le SDK d’application Windows
- Avantages et inconvénients du packaging d'une application – Vue d'ensemble du déploiement
- Identité, enregistrement et activation des applications Win32 non packagées
- Mise en œuvre du contrat de partage pour l'application WinAppSDK
- Mise en œuvre du contrat de partage pour les applications packagées avec un emplacement externe.
- Obtenir des informations d’activation pour les applications empaquetées
- Référence du schéma ShareTarget
Windows developer