Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment intégrer des applications empaquetées à la fonctionnalité Windows Share . Les applications empaquetées avec MSIX ont une identité de package et sont prêtes à s’inscrire en tant que cible de partage. La fonctionnalité Partager permet aux utilisateurs de partager du contenu d’une application à une autre. Une application empaquetée s’inscrit en tant que cible de partage pour recevoir et gérer les fichiers partagés au sein de l’application.
Qu’est-ce que la cible de partage ?
La cible de partage est une fonctionnalité introduite dans Windows 8 et permet à une application de recevoir des données d’une autre application. Share Target fonctionne comme un Presse-papiers, mais avec du contenu dynamique.
Pour que l’inscription cible de partage par défaut fonctionne avec les applications Win32, l’application doit avoir une identité de package et gérer également les arguments de partage en tant que ShareTargetActivatedEventArgs, qui est un objet actif de l’application source. Il ne s’agit pas d’un contenu de mémoire statique envoyé à l’application cible.
Remarque
Dans une application C++, utilisez l’API GetCurrentPackageFullName pour vérifier si l’application en cours d’exécution a une identité de package. L’API retourne le APPMODEL_ERROR_NO_PACKAGE code d’erreur s’il ne s’exécute pas avec l’identité de package.
Conditions préalables
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 de la fonctionnalité.
S'enregistrer comme cible de partage
Il existe deux étapes nécessaires pour implémenter le contrat de partage dans votre application.
Ajouter une extension cible de partage à appxmanifest
Dans l’Explorateur de solutions de Visual Studio, ouvrez le package.appxmanifest fichier du projet Packaging dans votre solution et ajoutez l’extension cible de partage.
<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 DataFormat configuration. Dans ce cas, l’application prend en charge le partage d’images, donc la valeur DataFormat est définie sur Bitmap.
Récupérer les arguments d’un événement de partage
À compter de Windows 10, version 1809, les applications empaquetées peuvent appeler la méthode AppInstance.GetActivatedEventArgs pour récupérer certains types d’informations d’activation d’application au démarrage. Par exemple, vous pouvez appeler cette méthode pour obtenir des informations sur l’activation de l’application ; s’il a été déclenché en ouvrant un fichier, en cliquant sur un toast interactif ou à l’aide d’un protocole inscrit.
Toutefois, les informations d’activation ShareTargetActivatedEventArgs sont prises en charge uniquement sur Windows 10, version 2004 et ultérieures. Par conséquent, l’application doit cibler les appareils avec cette version minimale spécifique.
Pour afficher une implémentation du Kit de développement logiciel (SDK) d’application Windows, consultez la OnLaunched méthode dans l’exemple d’application Cible de partage.
Pour les autres applications empaquetées, dans la Main méthode de l’application, recherchez 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 obtenir une implémentation complète, consultez l’application de démonstration du Photo Store .
Gérer les fichiers partagés
L’extrait de code suivant montre comment gérer les fichiers partagés dans une application empaquetée. L’extrait de code fait partie de la HandleShareAsync méthode 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 Kit de développement logiciel (SDK) d’application
- Créer votre premier projet WinUI 3
- Migrer d’UWP vers le KIT de développement logiciel (SDK) d’application Windows
- Avantages et inconvénients de l’empaquetage d’une application - Vue d’ensemble du déploiement
- Identité, inscription et activation d’applications Win32 non empaquetées
- Implémentation de contrat de partage pour le Kit de développement logiciel (SDK) d’application Windows
- Implémentation de contrat de partage pour les applications empaquetées avec emplacement externe
- Obtenir des informations d’activation pour les applications empaquetées
- Informations de référence sur le schéma ShareTarget
Windows developer