Démarrage automatique avec lecture automatique

Vous pouvez utiliser la lecture automatique pour proposer votre application en tant qu’option lorsque l’utilisateur connecte un périphérique à son PC. Cela inclut les périphériques autres que les périphériques de volume, tels qu’un appareil photo ou un lecteur multimédia, ou les périphériques de volume tels qu’une clé USB, une carte mémoire SD ou un DVD. Vous pouvez également utiliser AutoPlay pour proposer votre application en option lorsque les utilisateurs partagent des fichiers entre deux PC en utilisant la proximité (en appuyant).

Remarque

Si vous êtes un fabricant d’appareils et que vous souhaitez associer votre application Microsoft Store en tant que gestionnaireAutoPlay pour votre appareil, vous pouvez identifier cette application dans les métadonnées de l’appareil. Pour plus d’informations, voir AutoPlay pour les applications des appareils Microsoft Store.

S’enregistrer pour le contenu AutoPlay

Vous pouvez enregistrer des applications en tant qu’options pour les événements de contenu AutoPlay. Les événements de contenu AutoPlay sont déclenchés lorsqu’un appareil de volume, tel qu’une carte mémoire d’appareil photo, une clé USB ou un DVD, est inséré dans l’ordinateur. Nous montrons ici comment identifier votre application en tant qu’option AutoPlay lorsqu’un appareil de volume provenant d’un appareil photo est inséré.

Dans ce tutoriel, vous avez créé une application qui affiche des fichiers images ou les copie dans Images. Vous avez enregistré l’application pour l’événement de contenu AutoPlay ShowPicturesOnArrival.

AutoPlay déclenche également des événements de contenu pour le contenu partagé entre PC en utilisant la proximité (appuyer). Vous pouvez utiliser les étapes et le code de cette section pour gérer les fichiers partagés entre PC utilisant la proximité. Le tableau suivant répertorie les événements de contenu AutoPlay disponibles pour le partage de contenu en utilisant la proximité.

Action Événement de contenu AutoPlay
Partage de musique PlayMusicFilesOnArrival
Partage de vidéos PlayVideoFilesOnArrival

Lorsque des fichiers sont partagés en utilisant la proximité, la propriété Files de l’objet FileActivatedEventArgs contient une référence à un dossier racine qui contient tous les fichiers partagés.

Étape 1 : Créez un nouveau projet et ajoutez les déclarations AutoPlay

  1. Ouvrez Microsoft Visual Studio et sélectionnez Nouveau projet dans le menu Fichier. Dans la section Visual C#, sous Windows, sélectionnez Application vierge (Universal Windows). Nommez l’application AutoPlayDisplayOrCopyImages et cliquez sur OK.
  2. Ouvrez le fichier Package.appxmanifest et sélectionnez l’onglet Capacités. Sélectionnez les capacités Stockage amovible et Bibliothèque d’images. Cela permet à l’application d’accéder aux appareils de stockage amovibles pour la mémoire de l’appareil photo, ainsi qu’aux images locales.
  3. Dans le fichier manifest, sélectionnez l’onglet Déclarations. Dans la liste déroulante Déclarations disponibles, sélectionnez Contenu AutoPlay et cliquez sur Ajouter. Sélectionnez le nouvel élément contenu AutoPlay qui a été ajouté à la liste Déclarations prises en charge.
  4. Une déclaration de contenu AutoPlay identifie votre application en tant qu’option lorsque la lecture automatique déclenche un événement de contenu. L’événement est basé sur le contenu d’un appareil de volume tel qu’un DVD ou une clé USB. AutoPlay examine le contenu de l’appareil de volume et détermine l’événement de contenu à déclencher. Si la racine du volume contient un dossier DCIM, AVCHD ou PRIVATE\ACHD, ou si un utilisateur a activé l’option Choisir ce qu’il faut faire avec chaque type de média dans le panneau de configuration d’AutoPlay et que des images se trouvent à la racine du volume, AutoPlay déclenche l’événement ShowPicturesOnArrival Dans la section Actions de lancement, entrez les valeurs du tableau 1 ci-dessous pour la première action de lancement.
  5. Dans la section Actions de lancement de l’élément Contenu AutoPlay, cliquez sur Ajouter nouveau pour ajouter une deuxième action de lancement. Saisissez les valeurs du tableau 2 ci-dessous pour la deuxième action de lancement.
  6. Dans la liste déroulante Déclarations disponibles, sélectionnez Associations de type de fichier et cliquez sur Ajouter. Dans les propriétés de la nouvelle déclaration Associations de types de fichiers, définissez le champ Nom d’affichage sur Copie AutoPlay ou afficher des images et le champ Nom sur image_association1. Dans la section Types de fichiers pris en charge, cliquez sur Ajouter nouveau. Définissez le champ Type de fichier sur .jpg. Dans la section Types de fichiers pris en charge, définissez le champ Type de fichier de la nouvelle association de fichiers sur .png. Pour les événements de contenu, la lecture automatique filtre tous les types de fichiers qui ne sont pas explicitement associés à votre application.
  7. Enregistrez et fermez le fichier manifeste.

Table 1

Paramètre Valeur
Verbe show
Action Nom d’affichage Afficher les images
Événement de contenu ShowPicturesOnArrival

Le paramètre Action Display Name identifie la chaîne qu’AutoPlay affiche pour votre application. Le paramètre Verb identifie une valeur transmise à votre application pour l’option sélectionnée. Vous pouvez spécifier plusieurs actions de lancement pour un événement AutoPlay et utiliser le paramètre Verb pour déterminer l’option sélectionnée par l’utilisateur pour votre application. Vous pouvez savoir quelle option l’utilisateur a sélectionnée en vérifiant la propriété verb des arguments de l’événement de démarrage transmis à votre application. Vous pouvez utiliser n’importe quelle valeur pour le paramètre Verb, à l’exception de open, qui est réservé.

Tableau 2

Paramètre Valeur
Verbe copy
Action Nom d’affichage Copier les images dans la bibliothèque
Événement de contenu ShowPicturesOnArrival

Étape 2 : Ajouter l’interface XAML

Ouvrez le fichier MainPage.xaml et ajoutez le XAML suivant à la section <Grid> par défaut.

<TextBlock FontSize="18">File List</TextBlock>
<TextBlock x:Name="FilesBlock" HorizontalAlignment="Left" TextWrapping="Wrap"
           VerticalAlignment="Top" Margin="0,20,0,0" Height="280" Width="240" />
<Canvas x:Name="FilesCanvas" HorizontalAlignment="Left" VerticalAlignment="Top"
        Margin="260,20,0,0" Height="280" Width="100"/>

Étape 3 : Ajout du code d’initialisation

Le code de cette étape vérifie la valeur du verbe dans la propriété Verb, qui est l’un des arguments de démarrage transmis à l’application lors de l’événement OnFileActivated. Le code appelle ensuite une méthode liée à l’option sélectionnée par l’utilisateur. Pour l’événement de la mémoire de l’appareil photo, AutoPlay transmet à l’application le dossier racine du stockage de l’appareil photo. Vous pouvez récupérer ce dossier à partir du premier élément de la propriété Files.

Ouvrez le fichier App.xaml.cs et ajoutez le code suivant à la classe App.

protected override void OnFileActivated(FileActivatedEventArgs args)
{
    if (args.Verb == "show")
    {
        Frame rootFrame = (Frame)Window.Current.Content;
        MainPage page = (MainPage)rootFrame.Content;

        // Call DisplayImages with root folder from camera storage.
        page.DisplayImages((Windows.Storage.StorageFolder)args.Files[0]);
    }

    if (args.Verb == "copy")
    {
        Frame rootFrame = (Frame)Window.Current.Content;
        MainPage page = (MainPage)rootFrame.Content;

        // Call CopyImages with root folder from camera storage.
        page.CopyImages((Windows.Storage.StorageFolder)args.Files[0]);
    }

    base.OnFileActivated(args);
}

Note Les méthodes DisplayImages et CopyImages sont ajoutées dans les étapes suivantes.

Étape 4 : Ajouter le code pour afficher les images.

Dans le fichier MainPage.xaml.cs, ajoutez le code suivant à la classe MainPage.

async internal void DisplayImages(Windows.Storage.StorageFolder rootFolder)
{
    // Display images from first folder in root\DCIM.
    var dcimFolder = await rootFolder.GetFolderAsync("DCIM");
    var folderList = await dcimFolder.GetFoldersAsync();
    var cameraFolder = folderList[0];
    var fileList = await cameraFolder.GetFilesAsync();
    for (int i = 0; i < fileList.Count; i++)
    {
        var file = (Windows.Storage.StorageFile)fileList[i];
        WriteMessageText(file.Name + "\n");
        DisplayImage(file, i);
    }
}

async private void DisplayImage(Windows.Storage.IStorageItem file, int index)
{
    try
    {
        var sFile = (Windows.Storage.StorageFile)file;
        Windows.Storage.Streams.IRandomAccessStream imageStream =
            await sFile.OpenAsync(Windows.Storage.FileAccessMode.Read);
        Windows.UI.Xaml.Media.Imaging.BitmapImage imageBitmap =
            new Windows.UI.Xaml.Media.Imaging.BitmapImage();
        imageBitmap.SetSource(imageStream);
        var element = new Image();
        element.Source = imageBitmap;
        element.Height = 100;
        Thickness margin = new Thickness();
        margin.Top = index * 100;
        element.Margin = margin;
        FilesCanvas.Children.Add(element);
    }
    catch (Exception e)
    {
       WriteMessageText(e.Message + "\n");
    }
}

// Write a message to MessageBlock on the UI thread.
private Windows.UI.Core.CoreDispatcher messageDispatcher = Window.Current.CoreWindow.Dispatcher;

private async void WriteMessageText(string message, bool overwrite = false)
{
    await messageDispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,
        () =>
        {
            if (overwrite)
                FilesBlock.Text = message;
            else
                FilesBlock.Text += message;
        });
}

Étape 5 : Ajoutez du code pour copier les images

Dans le fichier MainPage.xaml.cs, ajoutez le code suivant à la classe MainPage.

async internal void CopyImages(Windows.Storage.StorageFolder rootFolder)
{
    // Copy images from first folder in root\DCIM.
    var dcimFolder = await rootFolder.GetFolderAsync("DCIM");
    var folderList = await dcimFolder.GetFoldersAsync();
    var cameraFolder = folderList[0];
    var fileList = await cameraFolder.GetFilesAsync();

    try
    {
        var folderName = "Images " + DateTime.Now.ToString("yyyy-MM-dd HHmmss");
        Windows.Storage.StorageFolder imageFolder = await
            Windows.Storage.KnownFolders.PicturesLibrary.CreateFolderAsync(folderName);

        foreach (Windows.Storage.IStorageItem file in fileList)
        {
            CopyImage(file, imageFolder);
        }
    }
    catch (Exception e)
    {
        WriteMessageText("Failed to copy images.\n" + e.Message + "\n");
    }
}

async internal void CopyImage(Windows.Storage.IStorageItem file,
                              Windows.Storage.StorageFolder imageFolder)
{
    try
    {
        Windows.Storage.StorageFile sFile = (Windows.Storage.StorageFile)file;
        await sFile.CopyAsync(imageFolder, sFile.Name);
        WriteMessageText(sFile.Name + " copied.\n");
    }
    catch (Exception e)
    {
        WriteMessageText("Failed to copy file.\n" + e.Message + "\n");
    }
}

Étape 6 : Création et exécution de l’application

  1. Appuyez sur F5 pour construire et déployer l’application (en mode débogage).
  2. Pour exécuter votre application, insérez la carte mémoire d’un appareil photo ou un autre appareil de stockage d’un appareil photo dans votre PC. Ensuite, sélectionnez l’une des options d’événement de contenu que vous avez spécifiées dans votre fichier package.appxmanifest dans la liste d’options AutoPlay. Cet exemple de code n’affiche ou ne copie que les images du dossier DCIM de la carte mémoire d’un appareil photo. Si la carte mémoire de votre appareil photo stocke des images dans un dossier AVCHD ou PRIVATE\ACHD, vous devrez mettre à jour le code en conséquence.

Remarque

Si vous n’avez pas de carte mémoire d’appareil photo, vous pouvez utiliser un lecteur flash dont la racine contient un dossier nommé DCIM et dont le sous-dossier contient des images.

S’enregistrer pour un appareil AutoPlay

Vous pouvez enregistrer des applications en tant qu’options pour les événements de l’appareil AutoPlay. Les événements AutoPlay sont déclenchés lorsqu’un appareil est connecté à un PC.

Nous montrons ici comment identifier votre application en tant qu’option AutoPlay lorsqu’un appareil photo est connecté à un PC. L’application s’enregistre comme gestionnaire de l’événement WPD\ImageSourceAutoPlay. Il s’agit d’un événement courant que le système Windows Portable Device (WPD) déclenche lorsque des appareils photo et d’autres périphériques d’imagerie l’informent qu’ils sont une source d’image utilisant le protocole MTP. Pour plus d’informations, consultez la section Appareils portables Windows.

Important Les API Windows.Devices.Portable.StorageDevice font partie de la famille des appareils de bureau. Les applications peuvent utiliser ces API uniquement sur les appareils Windows 10 de la famille des appareils de bureau, tels que les PC.

Étape 1 : Créez un nouveau projet et ajoutez les déclarations AutoPlay

  1. Ouvrez Visual Studio et sélectionnez Nouveau projet dans le menu Fichier. Dans la section Visual C#, sous Windows, sélectionnez Application vierge (Universal Windows). Nommez l’application AutoPlayDevice_Camera et cliquez sur OK.
  2. Ouvrez le fichier Package.appxmanifest et sélectionnez l’onglet Capacités. Sélectionnez la capacité Stockage amovible. Cela permet à l’application d’accéder aux données de l’appareil photo en tant qu’appareil de volume de stockage amovible.
  3. Dans le fichier manifeste, sélectionnez l’onglet Déclarations. Dans la liste déroulante Déclarations disponibles, sélectionnez Appareil AutoPlay et cliquez sur Ajouter. Sélectionnez le nouvel élément Dispositif AutoPlay qui a été ajouté à la liste Déclarations prises en charge.
  4. Une déclaration Appareil AutoPlay identifie votre application comme une option lorsque AutoPlay lève un événement d’appareil pour des événements connus. Dans la section Actions de lancement, entrez les valeurs du tableau ci-dessous pour la première action de lancement.
  5. Dans la liste déroulante Déclarations disponibles, sélectionnez Associations de type de fichier et cliquez sur Ajouter. Dans les propriétés de la nouvelle déclaration Associations de types de fichiers, définissez le champ Nom d’affichage sur Afficher les images de l’appareil photo et le champ Nom sur camera_association1. Dans la section Types de fichiers pris en charge, cliquez sur Ajouter nouveau (si nécessaire). Définissez le champ Type de fichier sur .jpg. Dans la section Types de fichiers pris en charge, cliquez à nouveau sur Ajouter nouveau. Définissez le champ Type de fichier de la nouvelle association de fichiers sur .png. Pour les événements de contenu, la lecture automatique filtre tous les types de fichiers qui ne sont pas explicitement associés à votre application.
  6. Enregistrez et fermez le fichier manifeste.
Paramètre Valeur
Verbe show
Action Nom d’affichage Afficher les images
Événement de contenu WPD\ImageSource

Le paramètre Action Display Name identifie la chaîne qu’AutoPlay affiche pour votre application. Le paramètre Verb identifie une valeur transmise à votre application pour l’option sélectionnée. Vous pouvez spécifier plusieurs actions de lancement pour un événement AutoPlay et utiliser le paramètre Verb pour déterminer l’option sélectionnée par l’utilisateur pour votre application. Vous pouvez savoir quelle option l’utilisateur a sélectionnée en vérifiant la propriété verb des arguments de l’événement de démarrage transmis à votre application. Vous pouvez utiliser n’importe quelle valeur pour le paramètre Verb, à l’exception de open, qui est réservé. Pour un exemple d’utilisation de plusieurs verbes dans une même application, voir S’enregistrer pour le contenu AutoPlay.

Étape 2 : Ajouter une référence d’assemblage pour les extensions de bureau

Les API nécessaires pour accéder au stockage sur un appareil portable Windows, Windows.Devices.Portable.StorageDevice, font partie de la famille des appareils de bureau. Cela signifie qu’un assemblage spécial est nécessaire pour utiliser les API et que ces appels ne fonctionneront que sur un appareil de la famille des appareils de bureau (comme un PC).

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit de la souris sur Références, puis sur Ajouter une référence...
  2. Développez Universal Windows et cliquez sur Extensions.
  3. Sélectionnez ensuite Windows Desktop Extensions for the UWP et cliquez sur OK.

Étape 3 : Ajouter l’interface XAML

Ouvrez le fichier MainPage.xaml et ajoutez le XAML suivant à la section <Grid> par défaut.

<StackPanel Orientation="Vertical" Margin="10,0,-10,0">
    <TextBlock FontSize="24">Device Information</TextBlock>
    <StackPanel Orientation="Horizontal">
        <TextBlock x:Name="DeviceInfoTextBlock" FontSize="18" Height="400" Width="400" VerticalAlignment="Top" />
        <ListView x:Name="ImagesList" HorizontalAlignment="Left" Height="400" VerticalAlignment="Top" Width="400">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical">
                        <Image Source="{Binding Path=Source}" />
                        <TextBlock Text="{Binding Path=Name}" />
                    </StackPanel>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapGrid Orientation="Horizontal" ItemHeight="100" ItemWidth="120"></WrapGrid>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
        </ListView>
    </StackPanel>
</StackPanel>

Étape 4 : Ajouter le code d’activation

Le code de cette étape référence l’appareil photo en tant que StorageDevice en transmettant l’identifiant de l’appareil à la méthode FromId. L’identifiant de l’appareil est obtenu en transformant les arguments de l’événement en DeviceActivatedEventArgs, puis en obtenant la valeur de la propriété DeviceInformationId.

Ouvrez le fichier App.xaml.cs et ajoutez le code suivant à la classe App.

protected override void OnActivated(IActivatedEventArgs args)
{
   if (args.Kind == ActivationKind.Device)
   {
      Frame rootFrame = null;
      // Ensure that the current page exists and is activated
      if (Window.Current.Content == null)
      {
         rootFrame = new Frame();
         rootFrame.Navigate(typeof(MainPage));
         Window.Current.Content = rootFrame;
      }
      else
      {
         rootFrame = Window.Current.Content as Frame;
      }
      Window.Current.Activate();

      // Make sure the necessary APIs are present on the device
      bool storageDeviceAPIPresent =
      Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Devices.Portable.StorageDevice");

      if (storageDeviceAPIPresent)
      {
         // Reference the current page as type MainPage
         var mPage = rootFrame.Content as MainPage;

         // Cast the activated event args as DeviceActivatedEventArgs and show images
         var deviceArgs = args as DeviceActivatedEventArgs;
         if (deviceArgs != null)
         {
            mPage.ShowImages(Windows.Devices.Portable.StorageDevice.FromId(deviceArgs.DeviceInformationId));
         }
      }
      else
      {
         // Handle case where APIs are not present (when the device is not part of the desktop device family)
      }

   }

   base.OnActivated(args);
}

Remarque

La méthode ShowImages est ajoutée à l’étape suivante.

Étape 5 : Ajouter du code pour afficher les informations sur l’appareil

Vous pouvez obtenir des informations sur la caméra à partir des propriétés de la classe StorageDevice. Le code de cette étape affiche le nom de l’appareil et d’autres informations à l’utilisateur lors de l’exécution de l’application. Le code appelle ensuite les méthodes GetImageList et GetThumbnail, que vous ajouterez à l’étape suivante, pour afficher les miniatures des images stockées sur l’appareil photo

Dans le fichier MainPage.xaml.cs, ajoutez le code suivant à la classe MainPage.

private Windows.Storage.StorageFolder rootFolder;

internal async void ShowImages(Windows.Storage.StorageFolder folder)
{
    DeviceInfoTextBlock.Text = "Display Name = " + folder.DisplayName + "\n";
    DeviceInfoTextBlock.Text += "Display Type =  " + folder.DisplayType + "\n";
    DeviceInfoTextBlock.Text += "FolderRelativeId = " + folder.FolderRelativeId + "\n";

    // Reference first folder of the device as the root
    rootFolder = (await folder.GetFoldersAsync())[0];
    var imageList = await GetImageList(rootFolder);

    foreach (Windows.Storage.StorageFile img in imageList)
    {
        ImagesList.Items.Add(await GetThumbnail(img));
    }
}

Remarque

Les méthodes GetImageList et GetThumbnail sont ajoutées à l’étape suivante.

Étape 6 : ajouter du code pour afficher les images

Le code de cette étape permet d’afficher les miniatures des images stockées sur l’appareil photo. Le code effectue des appels asynchrones à la caméra pour obtenir la miniature. Cependant, l’appel asynchrone suivant ne se produit pas tant que l’appel asynchrone précédent n’est pas terminé. Cela permet de s’assurer qu’une seule requête est adressée à la caméra à la fois.

Dans le fichier MainPage.xaml.cs, ajoutez le code suivant à la classe MainPage.

async private System.Threading.Tasks.Task<List<Windows.Storage.StorageFile>> GetImageList(Windows.Storage.StorageFolder folder)
{
    var result = await folder.GetFilesAsync();
    var subFolders = await folder.GetFoldersAsync();
    foreach (Windows.Storage.StorageFolder f in subFolders)
        result = result.Union(await GetImageList(f)).ToList();

    return (from f in result orderby f.Name select f).ToList();
}

async private System.Threading.Tasks.Task<Image> GetThumbnail(Windows.Storage.StorageFile img)
{
    // Get the thumbnail to display
    var thumbnail = await img.GetThumbnailAsync(Windows.Storage.FileProperties.ThumbnailMode.SingleItem,
                                                100,
                                                Windows.Storage.FileProperties.ThumbnailOptions.UseCurrentScale);

    // Create a XAML Image object bind to on the display page
    var result = new Image();
    result.Height = thumbnail.OriginalHeight;
    result.Width = thumbnail.OriginalWidth;
    result.Name = img.Name;
    var imageBitmap = new Windows.UI.Xaml.Media.Imaging.BitmapImage();
    imageBitmap.SetSource(thumbnail);
    result.Source = imageBitmap;

    return result;
}

Étape 7 : Création et exécution de l’application

  1. Appuyez sur F5 pour construire et déployer l’application (en mode débogage).
  2. Pour exécuter votre application, connectez une caméra à votre machine. Sélectionnez ensuite l’application dans la liste d’options AutoPlay.

Remarque

Toutes les caméras ne font pas de publicité pour l’événement d’appareil WPD\ImageSource AutoPlay.

Configurer le stockage amovible

Vous pouvez identifier un appareil de volume tel qu’une carte mémoire ou une clé USB en tant qu’appareil AutoPlay lorsque l’appareil de volume est connecté à un PC. Ceci est particulièrement utile lorsque vous souhaitez associer une application spécifique pour AutoPlay à présenter à l’utilisateur pour votre appareil de volume.

Nous vous montrons ici comment identifier votre appareil de volume en tant qu’appareil AutoPlay.

Pour identifier votre appareil de volume en tant qu’appareil AutoPlay, ajoutez un fichier autorun.inf au lecteur racine de votre appareil. Dans le fichier autorun.inf, ajoutez une clé CustomEvent à la section AutoRun. Lorsque votre périphérique de volume se connecte à un PC, AutoPlay trouve le fichier autorun.inf et traite votre volume comme un appareil. AutoPlay créera un événement AutoPlay en utilisant le nom que vous avez fourni pour la clé CustomEvent. Vous pouvez alors créer une application et l’enregistrer en tant que gestionnaire de cet événement AutoPlay. Lorsque l’appareil est connecté au PC, AutoPlay affichera votre application en tant que gestionnaire pour votre appareil de volume. Pour plus d’informations sur les fichiers autorun.inf, consultez les entrées autorun.inf.

Étape 1 : Créer un fichier autorun.inf

Dans le lecteur racine de votre appareil de volume, ajoutez un fichier nommé autorun.inf. Ouvrez le fichier autorun.inf et ajoutez le texte suivant.

[AutoRun]
CustomEvent=AutoPlayCustomEventQuickstart

Étape 2 : Créez un nouveau projet et ajoutez les déclarations AutoPlay

  1. Ouvrez Visual Studio et sélectionnez Nouveau projet dans le menu Fichier. Dans la section Visual C#, sous Windows, sélectionnez Application vierge (Universal Windows). Nommez l’application AutoPlayCustomEvent et cliquez sur OK.
  2. Ouvrez le fichier Package.appxmanifest et sélectionnez l’onglet Capacités. Sélectionnez la capacité Stockage amovible. Cela permet à l’application d’accéder aux fichiers et dossiers des appareils de stockage amovibles.
  3. Dans le fichier manifest, sélectionnez l’onglet Déclarations. Dans la liste déroulante Déclarations disponibles, sélectionnez Contenu AutoPlay et cliquez sur Ajouter. Sélectionnez le nouvel élément contenu AutoPlay qui a été ajouté à la liste Déclarations prises en charge.

Remarque

Vous pouvez également choisir d’ajouter une déclaration d’appareil AutoPlay pour votre événement AutoPlay personnalisé.

  1. Dans la section Actions de lancement de votre déclaration d’événement Contenu AutoPlay, entrez les valeurs du tableau ci-dessous pour la première action de lancement.
  2. Dans la liste déroulante Déclarations disponibles, sélectionnez Associations de type de fichier et cliquez sur Ajouter. Dans les propriétés de la nouvelle déclaration Associations de type de fichier, définissez le champ Nom d’affichage sur Afficher les fichiers .ms et le champ Nom sur ms_association. Dans la section Types de fichiers pris en charge, cliquez sur Ajouter nouveau. Définissez le champ Type de fichier sur .ms. Pour les événements de contenu, AutoPlay filtre tous les types de fichiers qui ne sont pas explicitement associés à votre application.
  3. Enregistrez et fermez le fichier manifeste.
Paramètre Valeur
Verbe show
Action Nom d’affichage Afficher les fichiers
Événement de contenu AutoPlayCustomEventQuickstart

La valeur Content Event est le texte que vous avez fourni pour la clé CustomEvent dans votre fichier autorun.inf. Le paramètre Action Display Name identifie la chaîne qu’AutoPlay affiche pour votre application. Le paramètre Verb identifie une valeur transmise à votre application pour l’option sélectionnée. Vous pouvez spécifier plusieurs actions de lancement pour un événement AutoPlay et utiliser le paramètre Verb pour déterminer l’option sélectionnée par l’utilisateur pour votre application. Vous pouvez savoir quelle option l’utilisateur a sélectionnée en vérifiant la propriété verb des arguments de l’événement de démarrage transmis à votre application. Vous pouvez utiliser n’importe quelle valeur pour le paramètre Verb, à l’exception de open, qui est réservé.

Étape 3 : Ajouter l’interface XAML

Ouvrez le fichier MainPage.xaml et ajoutez le XAML suivant à la section <Grid> par défaut.

<StackPanel Orientation="Vertical">
    <TextBlock FontSize="28" Margin="10,0,800,0">Files</TextBlock>
    <TextBlock x:Name="FilesBlock" FontSize="22" Height="600" Margin="10,0,800,0" />
</StackPanel>

Étape 4 : Ajouter le code d’activation

Le code de cette étape appelle une méthode pour afficher les dossiers dans le lecteur racine de votre appareil de volume. Pour les événements de contenu AutoPlay, AutoPlay transmet le dossier racine de l’appareil de stockage dans les arguments de démarrage transmis à l’application lors de l’événement OnFileActivated. Vous pouvez récupérer ce dossier à partir du premier élément de la propriété Files.

Ouvrez le fichier App.xaml.cs et ajoutez le code suivant à la classe App.

protected override void OnFileActivated(FileActivatedEventArgs args)
{
    var rootFrame = Window.Current.Content as Frame;
    var page = rootFrame.Content as MainPage;

    // Call ShowFolders with root folder from device storage.
    page.DisplayFiles(args.Files[0] as Windows.Storage.StorageFolder);

    base.OnFileActivated(args);
}

Remarque

La méthode DisplayFiles est ajoutée à l’étape suivante.

Étape 5 : Ajoutez du code pour afficher les dossiers

Dans le fichier MainPage.xaml.cs, ajoutez le code suivant à la classe MainPage.

internal async void DisplayFiles(Windows.Storage.StorageFolder folder)
{
    foreach (Windows.Storage.StorageFile f in await ReadFiles(folder, ".ms"))
    {
        FilesBlock.Text += "  " + f.Name + "\n";
    }
}

internal async System.Threading.Tasks.Task<IReadOnlyList<Windows.Storage.StorageFile>>
    ReadFiles(Windows.Storage.StorageFolder folder, string fileExtension)
{
    var options = new Windows.Storage.Search.QueryOptions();
    options.FileTypeFilter.Add(fileExtension);
    var query = folder.CreateFileQueryWithOptions(options);
    var files = await query.GetFilesAsync();

    return files;
}

Étape 6 : Générer et exécuter l’application

  1. Appuyez sur F5 pour construire et déployer l’application (en mode débogage).
  2. Pour exécuter votre application, insérez une carte mémoire ou un autre appareil de stockage dans votre PC. Sélectionnez ensuite votre application dans la liste des applications du gestionnaire AutoPlay.

Référence de l’événement AutoPlay

Le système AutoPlay permet aux applications de s’enregistrer pour une variété d’événements d’arrivée de l’appareil et du volume (disque). Pour vous inscrire à des événements de contenu AutoPlay, vous devez activer la fonctionnalité Stockage amovible dans le manifeste de votre package. Ce tableau présente les événements pour lesquels vous pouvez vous enregistrer et le moment où ils sont déclenchés.

Scénario Event Description
Utilisation de photos sur un appareil photo WPD\ImageSource Cet événement est déclenché pour les appareils photo identifiés comme des appareils portables Windows et offrant la fonctionnalité ImageSource.
Utilisation de musique sur un lecteur audio WPD\AudioSource Lancé pour les lecteurs multimédias identifiés comme des appareils portables Windows et offrant la fonctionnalité AudioSource.
Utilisation de vidéos sur une caméra vidéo WPD\VideoSource Lancé pour les caméras vidéo identifiées comme des appareils portables Windows et offrant la fonctionnalité VideoSource.
Accéder à une clé USB ou à un disque dur externe connecté StorageOnArrival S’affiche lorsqu’un lecteur ou un volume est connecté à l’ordinateur. Si le lecteur ou le volume contient un dossier DCIM, AVCHD ou PRIVATE\ACHD à la racine du disque, l’événement ShowPicturesOnArrival est déclenché à la place.
Utilisation de photos à partir d’une mémoire de masse (ancienne version) ShowPicturesOnArrival Cet événement est déclenché lorsqu’un lecteur ou un volume contient un dossier DCIM, AVCHD ou PRIVATE\ACHD à la racine du disque. Si l’utilisateur a activé l’option Choisir ce qu’il faut faire avec chaque type de support dans le panneau de configuration d’AutoPlay, AutoPlay examine un volume connecté à l’ordinateur pour déterminer le type de contenu du disque. Lorsque des photos sont trouvées, l’option ShowPicturesOnArrival est activée.
Réception de photos avec le partage de proximité (appuyer et envoyer) ShowPicturesOnArrival Lorsque les utilisateurs envoient du contenu en utilisant la proximité (appuyer et envoyer), AutoPlay examine les fichiers partagés pour déterminer le type de contenu. Si des photos sont trouvées, l’option ShowPicturesOnArrival est activée.
Utilisation de musique à partir d’une mémoire de masse (ancienne) PlayMusicFilesOnArrival Si l’utilisateur a activé l’option Choisir quoi faire avec chaque type de média dans le panneau de configuration d’AutoPlay, AutoPlay examine un volume connecté au PC pour déterminer le type de contenu du disque. Lorsque des fichiers musicaux sont trouvés, l’option PlayMusicFilesOnArrival est activée.
Recevoir de la musique avec le partage de proximité (appuyer et envoyer) PlayMusicFilesOnArrival Lorsque les utilisateurs envoient du contenu en utilisant la proximité (appuyer et envoyer), AutoPlay examine les fichiers partagés pour déterminer le type de contenu. Si des fichiers musicaux sont trouvés, l’option PlayMusicFilesOnArrival est activée.
Utilisation de vidéos à partir d’une mémoire de masse (ancienne) PlayVideoFilesOnArrival Si l’utilisateur a activé l’option Choisir quoi faire avec chaque type de média dans le panneau de configuration d’AutoPlay, AutoPlay examine un volume connecté au PC pour déterminer le type de contenu du disque. Lorsque des fichiers vidéo sont trouvés, l’option PlayVideoFilesOnArrival est activée.
Réception de vidéos avec le partage de proximité (appuyer et envoyer) PlayVideoFilesOnArrival Lorsque les utilisateurs envoient du contenu en utilisant la proximité (appuyer et envoyer), AutoPlay examine les fichiers partagés pour déterminer le type de contenu. Si des fichiers vidéo sont trouvés, l’option PlayVideoFilesOnArrival est activée.
Traitement d’ensembles mixtes de fichiers provenant d’un appareil connecté MixedContentOnArrival Si l’utilisateur a activé l’option Choisir quoi faire avec chaque type de média dans le panneau de configuration d’AutoPlay, AutoPlay examine un volume connecté au PC pour déterminer le type de contenu du disque. Si aucun type de contenu spécifique n’est trouvé (par exemple, des images), le message MixedContentOnArrival est déclenché.
Traitement d’ensembles mixtes de fichiers avec le partage de proximité (appuyer et envoyer) MixedContentOnArrival Lorsque les utilisateurs envoient du contenu en utilisant la proximité (appuyer et envoyer), AutoPlay examine les fichiers partagés pour déterminer le type de contenu. Si aucun type de contenu spécifique n’est trouvé (par exemple, des images), le message MixedContentOnArrival est déclenché.
Gestion de la vidéo à partir d’un support optique PlayDVDMovieOnArrival
PlayBluRayOnArrival
PlayVideoCDMovieOnArrival
PlaySuperVideoCDMovieOnArrival
Lorsqu’un disque est inséré dans le lecteur optique, AutoPlay examine les fichiers pour déterminer le type de contenu. Lorsque des fichiers vidéo sont trouvés, l’événement correspondant au type de disque optique est déclenché.
Traiter la musique à partir d’un support optique PlayCDAudioOnArrival
PlayDVDAudioOnArrival
Lorsqu’un disque est inséré dans le lecteur optique, AutoPlay examine les fichiers pour déterminer le type de contenu. Lorsque des fichiers musicaux sont trouvés, l’événement correspondant au type de disque optique est déclenché.
Lecture de disques améliorés PlayEnhancedCDOnArrival
PlayEnhancedDVDOnArrival
Lorsqu’un disque est inséré dans le lecteur optique, AutoPlay examine les fichiers pour déterminer le type de contenu. Lorsqu’un disque amélioré est trouvé, l’événement correspondant au type de disque optique est déclenché.
Traiter les disques optiques inscriptibles HandleCDBurningOnArrival
HandleDVDBurningOnArrival
HandleBDBurningOnArrival
Lorsqu’un disque est inséré dans le lecteur optique, AutoPlay examine les fichiers pour déterminer le type de contenu. Lorsqu’un disque inscriptible est trouvé, l’événement correspondant au type de disque optique est déclenché.
Gestion de toute autre connexion d’appareil ou de volume UnknownContentOnArrival Cet événement est déclenché pour tous les événements en cas de découverte d’un contenu qui ne correspond à aucun des événements de contenu AutoPlay. L’utilisation de cet événement n’est pas recommandée. Vous ne devez enregistrer votre application que pour les événements AutoPlay spécifiques qu’elle peut gérer.

Vous pouvez spécifier qu’AutoPlay lève un événement de contenu AutoPlay personnalisé à l’aide de l’entrée CustomEvent dans le fichier autorun.inf d’un volume. Pour plus d’informations, voir Entrées autorun.inf.

Vous pouvez enregistrer votre application en tant que gestionnaire d’événements AutoPlay Content ou AutoPlay Device en ajoutant une extension au fichier package.appxmanifest de votre application. Si vous utilisez Visual Studio, vous pouvez ajouter une déclaration AutoPlay Content ou AutoPlay Device dans l’onglet Declarations. Si vous modifiez directement le fichier package.appxmanifest de votre application, ajoutez un élément Extension à votre manifeste de package qui spécifie soit windows.autoPlayContent, soit windows.autoPlayDevice comme Catégorie. Par exemple, l’entrée suivante dans le manifeste du package ajoute une extension AutoPlay Content pour enregistrer l’application en tant que gestionnaire de l’événement ShowPicturesOnArrival.

  <Applications>
    <Application Id="AutoPlayHandlerSample.App">
      <Extensions>
        <Extension Category="windows.autoPlayContent">
          <AutoPlayContent>
            <LaunchAction Verb="show" ActionDisplayName="Show Pictures"
                          ContentEvent="ShowPicturesOnArrival" />
          </AutoPlayContent>
        </Extension>
      </Extensions>
    </Application>
  </Applications>