Accès au contenu Groupement résidentielAccessing HomeGroup content

API importantesImportant APIs

Accédez au contenu stocké dans le dossier Groupement résidentiel de l’utilisateur, qui contient des images, de la musique et des vidéos.Access content stored in the user's HomeGroup folder, including pictures, music, and videos.

PrérequisPrerequisites

  • Comprendre la programmation asynchrone pour les applications pour la plateforme Windows universelle (UWP)Understand async programming for Universal Windows Platform (UWP) apps

    Pour apprendre à écrire des applications asynchrones en C# ou Visual Basic, voir Appeler des API asynchrones en C# ou Visual Basic.You can learn how to write asynchronous apps in C# or Visual Basic, see Call asynchronous APIs in C# or Visual Basic. Pour apprendre à écrire des applications asynchrones en C++, voir Programmation asynchrone en C++.To learn how to write asynchronous apps in C++, see Asynchronous programming in C++.

  • Déclarations des fonctionnalités d’applicationApp capabilty declarations

    Pour accéder au contenu Groupement résidentiel, l’ordinateur de l’utilisateur doit avoir un Groupement résidentiel configuré et votre application au moins l’une des fonctionnalités suivantes : picturesLibrary, musicLibrary ou videosLibrary.To access HomeGroup content, the user's machine must have a HomeGroup set up and your app must have at least one of the following capabilities: picturesLibrary, musicLibrary, or videosLibrary. Lorsque votre application accédera au dossier Groupement résidentiel, elle ne verra que les bibliothèques correspondant aux fonctionnalités déclarées dans le manifeste de votre application.When your app accesses the HomeGroup folder, it will see only the libraries that correspond to the capabilities declared in your app's manifest. Pour en savoir plus, voir Autorisations d’accès aux fichiers.To learn more, see File access permissions.

    Notes

     Le contenu de la bibliothèque Documents d’un Groupement résidentiel n’est pas visible pour votre application quelles que soient les fonctionnalités déclarées dans le manifeste de votre application et quels que soient les paramètres de partage de l’utilisateur. Content in the Documents library of a HomeGroup isn't visible to your app regardless of the capabilities declared in your app's manifest and regardless of the user's sharing settings.  

  • Comprendre comment utiliser les sélecteurs de fichiersUnderstand how to use file pickers

    Le sélecteur de fichiers sert généralement à accéder aux fichiers et aux dossiers du Groupement résidentiel.You typically use the file picker to access files and folders in the HomeGroup. Pour savoir comment utiliser le sélecteur de fichiers, voir Ouvrir des fichiers et dossiers à l’aide d’un sélecteur.To learn how to use the file picker, see Open files and folders with a picker.

  • Comprendre les requêtes de fichiers et de dossiersUnderstand file and folder queries

    Vous pouvez utiliser des requêtes pour énumérer les fichiers et les dossiers du Groupement résidentiel.You can use queries to enumerate files and folders in the HomeGroup. Pour en savoir plus sur les requêtes de fichiers et de dossiers, voir Énumération et interrogation de fichiers et de dossiers.To learn about file and folder queries, see Enumerating and querying files and folders.

Ouvrir le sélecteur de fichiers au Groupement résidentielOpen the file picker at the HomeGroup

Suivez ces étapes pour ouvrir une instance du sélecteur de fichiers qui permet à l’utilisateur de sélectionner des fichiers et des dossiers du Groupement résidentiel :Follow these steps to open an instance of the file picker that lets the user pick files and folders from the HomeGroup:

  1. Créer et personnaliser le sélecteur de fichiersCreate and customize the file picker

    Utilisez FileOpenPicker pour créer le sélecteur de fichiers, puis définissez le paramètre SuggestedStartLocation du sélecteur sur PickerLocationId.HomeGroup.Use FileOpenPicker to create the file picker, and then set the picker's SuggestedStartLocation to PickerLocationId.HomeGroup. Ou définissez les autres propriétés qui sont pertinentes pour vos utilisateurs et votre application.Or, set other properties that are relevant to your users and your app. Pour obtenir des directives susceptibles de vous aider à choisir comment personnaliser le sélecteur de fichiers, voir Recommandations et liste de vérification sur les sélecteurs de fichiers.For guidelines to help you decide how to customize the file picker, see Guidelines and checklist for file pickers

    Cet exemple crée un sélecteur de fichiers qui s’ouvre au Groupement résidentiel, inclut des fichiers de tous types et affiche les fichiers sous forme d’images miniatures :This example creates a file picker that opens at the HomeGroup, includes files of any type, and displays the files as thumbnail images:

    Windows.Storage.Pickers.FileOpenPicker picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.HomeGroup;
    picker.FileTypeFilter.Clear();
    picker.FileTypeFilter.Add("*");
    
  2. Montrer le sélecteur de fichiers et traiter le fichier sélectionné.Show the file picker and process the picked file.

    Une fois que vous avez créé et personnalisé le sélecteur de fichiers, offrez à l’utilisateur la possibilité de choisir un fichier en appelant FileOpenPicker.PickSingleFileAsync, ou plusieurs fichiers en appelant FileOpenPicker.PickMultipleFilesAsync.After you create and customize the file picker, let the user pick one file by calling FileOpenPicker.PickSingleFileAsync, or multiple files by calling FileOpenPicker.PickMultipleFilesAsync.

    Cet exemple affiche le sélecteur de fichiers pour permettre à l’utilisateur de sélectionner un fichier :This example displays the file picker to let the user pick one file:

    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
    
    if (file != null)
    {
        // Do something with the file.
    }
    else
    {
        // No file returned. Handle the error.
    }   
    

Chercher des fichiers dans le Groupement résidentielSearch the HomeGroup for files

Cette sélection illustre comment trouver des éléments du Groupement résidentiel qui correspondent à un terme de requête fourni par l’utilisateur.This section shows how to find HomeGroup items that match a query term provided by the user.

  1. Obtenez le terme de requête de l’utilisateur.Get the query term from the user.

    Nous obtenons ici un terme de requête que l’utilisateur a entré dans un contrôle TextBox appelé searchQueryTextBox :Here we get a query term that the user has entered into a TextBox control called searchQueryTextBox:

    string queryTerm = this.searchQueryTextBox.Text;    
    
  2. Définissez les options de requête et le filtre de recherche.Set the query options and search filter.

    Les options de requête déterminent la manière avec laquelle les résultats de la recherche sont triés, tandis que le filtre de recherche détermine quels éléments sont inclus dans les résultats de la recherche.Query options determine how the search results are sorted, while the search filter determines which items are included in the search results.

    Cet exemple définit des options de requête qui trient les résultats de recherche par pertinence, puis par date de modification.This example sets query options that sort the search results by relevance and then the date modified. Le filtre de recherche est le terme de requête que l’utilisateur a entré à l’étape précédente :The search filter is the query term that the user entered in the previous step:

    Windows.Storage.Search.QueryOptions queryOptions =
            new Windows.Storage.Search.QueryOptions
                (Windows.Storage.Search.CommonFileQuery.OrderBySearchRank, null);
    queryOptions.UserSearchFilter = queryTerm.Text;
    Windows.Storage.Search.StorageFileQueryResult queryResults =
            Windows.Storage.KnownFolders.HomeGroup.CreateFileQueryWithOptions(queryOptions);    
    
  3. Exécutez la requête, puis traitez les résultats.Run the query and process the results.

    L’exemple suivant exécute la requête de recherche dans le Groupement résidentiel et enregistre les noms de tout fichier correspondant sous forme de liste de chaînes.The following example runs the search query in the HomeGroup and saves the names of any matching files as a list of strings.

    System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFile> files =
        await queryResults.GetFilesAsync();
    
    if (files.Count > 0)
    {
        outputString += (files.Count == 1) ? "One file found\n" : files.Count.ToString() + " files found\n";
        foreach (Windows.Storage.StorageFile file in files)
        {
            outputString += file.Name + "\n";
        }
    }    
    

Rechercher dans le Groupement résidentiel les fichiers partagés d’un utilisateur particulierSearch the HomeGroup for a particular user's shared files

Cette section vous montre comment trouver les fichiers du Groupement résidentiel qui sont partagés par un utilisateur particulier.This section shows you how to find HomeGroup files that are shared by a particular user.

  1. Obtenir un ensemble d’utilisateurs du Groupement résidentiel.Get a collection of HomeGroup users.

    Chacun des dossiers de premier niveau du Groupement résidentiel représente un utilisateur individuel.Each of the first-level folders in the HomeGroup represents an individual HomeGroup user. Ainsi, pour obtenir la collection d’utilisateurs du Groupement résidentiel, appelez GetFoldersAsync pour récupérer les dossiers du Groupement résidentiel du niveau supérieur.So, to get the collection of HomeGroup users, call GetFoldersAsync retrieve the top-level HomeGroup folders.

    System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFolder> hgFolders =
        await Windows.Storage.KnownFolders.HomeGroup.GetFoldersAsync();    
    
  2. Trouver le dossier de l’utilisateur cible, puis créer une requête de fichier dont la portée correspond au dossier de cet utilisateur.Find the target user's folder, and then create a file query scoped to that user's folder.

    L’exemple suivant répète l’opération sur les dossiers récupérés jusqu’à ce qu’il trouve le dossier de l’utilisateur cible.The following example iterates through the retrieved folders to find the target user's folder. Ensuite, il définit des options de requête pour trouver tous les fichiers du dossier, d’abord triés par pertinence, puis par date de modification.Then, it sets query options to find all files in the folder, sorted first by relevance and then by the date modified. L’exemple construit une chaîne qui rapporte le nombre de fichiers trouvés, ainsi que les noms des fichiers.The example builds a string that reports the number of files found, along with the names of the files.

    bool userFound = false;
    foreach (Windows.Storage.StorageFolder folder in hgFolders)
    {
        if (folder.DisplayName == targetUserName)
        {
            // Found the target user's folder, now find all files in the folder.
            userFound = true;
            Windows.Storage.Search.QueryOptions queryOptions =
                new Windows.Storage.Search.QueryOptions
                    (Windows.Storage.Search.CommonFileQuery.OrderBySearchRank, null);
            queryOptions.UserSearchFilter = "*";
            Windows.Storage.Search.StorageFileQueryResult queryResults =
                folder.CreateFileQueryWithOptions(queryOptions);
            System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFile> files =
                await queryResults.GetFilesAsync();
    
            if (files.Count > 0)
            {
                string outputString = "Searched for files belonging to " + targetUserName + "'\n";
                outputString += (files.Count == 1) ? "One file found\n" : files.Count.ToString() + " files found\n";
                foreach (Windows.Storage.StorageFile file in files)
                {
                    outputString += file.Name + "\n";
                }
            }
        }
    }    
    

Lecture en continu de la vidéo du Groupement résidentielStream video from the HomeGroup

Suivez les étapes suivantes pour lire en continu le contenu vidéo du Groupement résidentiel :Follow these steps to stream video content from the HomeGroup:

  1. Inclure un MediaElement dans votre application.Include a MediaElement in your app.

    Un MediaElement vous permet de lire des contenus audio et vidéo dans votre application.A MediaElement lets you play back audio and video content in your app. Pour plus d’informations sur la lecture audio et vidéo, voir Créer des contrôles de transport personnalisés et Audio, vidéo et appareil photo.For more information on audio and video playback, see Create custom transport controls and Audio, video, and camera.

    <Grid x:Name="Output" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Row="1">
        <MediaElement x:Name="VideoBox" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0" Width="400" Height="300"/>
    </Grid>    
    
  2. Ouvrez un sélecteur de fichiers dans le Groupement résidentiel, et appliquez un filtre qui inclut les fichiers vidéo dans les formats pris en charge par votre application.Open a file picker at the HomeGroup and apply a filter that includes video files in the formats that your app supports.

    Cet exemple inclut les fichiers .mp4 et .wmv dans le sélecteur d’ouverture de fichier.This example includes .mp4 and .wmv files in the file open picker.

    Windows.Storage.Pickers.FileOpenPicker picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.HomeGroup;
    picker.FileTypeFilter.Clear();
    picker.FileTypeFilter.Add(".mp4");
    picker.FileTypeFilter.Add(".wmv");
    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();   
    
  3. Ouvrez la sélection de fichier de l’utilisateur pour un accès en lecture, définissez le flux de fichiers comme source pour le MediaElement, puis lisez le fichier.Open the user's file selection for read access, and set the file stream as the source for the MediaElement, and then play the file.

    if (file != null)
    {
        var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
        VideoBox.SetSource(stream, file.ContentType);
        VideoBox.Stop();
        VideoBox.Play();
    }
    else
    {
        // No file selected. Handle the error here.
    }