Zugriff auf Inhalte in der HeimnetzgruppeAccessing HomeGroup content

Wichtige APIsImportant APIs

Greifen Sie auf Inhalte zu, die sich im Heimnetzgruppenordner des Benutzers befinden, einschließlich Bildern, Musik und Videos.Access content stored in the user's HomeGroup folder, including pictures, music, and videos.

VoraussetzungenPrerequisites

  • Kenntnisse in der asynchronen Programmierung für Apps für die universelle Windows-Plattform (UWP)Understand async programming for Universal Windows Platform (UWP) apps

    Informationen zum Schreiben von asynchronen Apps in C# oder Visual Basic finden Sie unter Aufrufen asynchroner APIs in C# oder Visual Basic.You can learn how to write asynchronous apps in C# or Visual Basic, see Call asynchronous APIs in C# or Visual Basic. Informationen zum Schreiben von asynchronen Apps in C++ finden Sie unter Asynchrone Programmierung in C++.To learn how to write asynchronous apps in C++, see Asynchronous programming in C++.

  • Deklarationen von App-FunktionenApp capabilty declarations

    Damit auf Heimnetzgruppeninhalte zugegriffen werden kann, muss auf dem Computer des Benutzers eine Heimnetzgruppe eingerichtet sein, und Ihre App muss mindestens eine der folgenden Funktionen unterstützen: picturesLibrary, musicLibrary oder 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. Wenn Ihre App auf den Heimnetzgruppenordner zugreift, sieht sie nur die Bibliotheken, die den im Manifest Ihrer App deklarierten Funktionen entsprechen.When your app accesses the HomeGroup folder, it will see only the libraries that correspond to the capabilities declared in your app's manifest. Weitere Informationen finden Sie unter Berechtigungen für den Dateizugriff.To learn more, see File access permissions.

    Hinweis

     Inhalte der Dokumentbibliothek einer Heimnetzgruppe sind für Ihre App nicht sichtbar – unabhängig von den deklarierten Funktionen in ihrem Manifest und den Freigabeeinstellungen des Benutzers. 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.  

  • So wird's gemacht: Verwenden der DateiauswahlUnderstand how to use file pickers

    Normalerweise verwenden Sie die Dateiauswahl, um auf Dateien und Ordner in der Heimnetzgruppe zuzugreifen.You typically use the file picker to access files and folders in the HomeGroup. Informationen zur Verwendung der Dateiauswahl finden Sie unter Öffnen von Dateien und Ordnern mit einer Auswahl.To learn how to use the file picker, see Open files and folders with a picker.

  • Grundlegende Informationen zu Datei- und OrdnerabfragenUnderstand file and folder queries

    Sie können Abfragen dazu verwenden, Dateien und Ordner in der Heimnetzgruppe aufzulisten.You can use queries to enumerate files and folders in the HomeGroup. Weitere Informationen zu Datei- und Ordnerabfragen finden Sie unter Aufzählen und Abfragen von Dateien und Ordnern.To learn about file and folder queries, see Enumerating and querying files and folders.

Öffnen der Dateiauswahl für die HeimnetzgruppeOpen the file picker at the HomeGroup

Führen Sie die folgenden Schritte durch, um eine Instanz der Dateiauswahl zu öffnen, mit der Benutzer Dateien und Ordner in der Heimnetzgruppe auswählen können:Follow these steps to open an instance of the file picker that lets the user pick files and folders from the HomeGroup:

  1. Erstellen und Anpassen der DateiauswahlCreate and customize the file picker

    Verwenden Sie FileOpenPicker zum Erstellen einer Dateiauswahl, und legen Sie dann den SuggestedStartLocation der Auswahl auf PickerLocationId.HomeGroup fest.Use FileOpenPicker to create the file picker, and then set the picker's SuggestedStartLocation to PickerLocationId.HomeGroup. Optional können Sie weitere Eigenschaften festlegen, die für Benutzer und App relevant sind.Or, set other properties that are relevant to your users and your app. Richtlinien zur Anpassung der Dateiauswahl erhalten Sie in Richtlinien und Prüfliste für die Dateiauswahl.For guidelines to help you decide how to customize the file picker, see Guidelines and checklist for file pickers

    In diesem Beispiel wird eine Dateiauswahl erstellt, die in der Heimnetzgruppe geöffnet wird, bei der Dateien jeglichen Typs angezeigt werden und die Dateien als Miniaturbilder erscheinen: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. Blenden Sie die Dateiauswahl ein, und verarbeiten Sie die ausgewählte Datei.Show the file picker and process the picked file.

    Lassen Sie den Benutzer eine Datei auswählen, indem Sie FileOpenPicker.PickSingleFileAsync aufrufen, oder mehrere Dateien auswählen, indem Sie FileOpenPicker.PickMultipleFilesAsync aufrufen, nachdem Sie die Dateiauswahl erstellt und angepasst haben.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.

    Dieses Beispiel zeigt eine Dateiauswahl, bei der der Benutzer eine Datei auswählen kann: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.
    }   
    

Durchsuchen der Heimnetzgruppe nach DateienSearch the HomeGroup for files

In diesem Beispiel wird erläutert, wie Elemente in der Heimnetzgruppe gefunden werden können, die einem vom Benutzer angegebenen Abfrageausdruck entsprechen.This section shows how to find HomeGroup items that match a query term provided by the user.

  1. Rufen Sie den Abfrageausdruck vom Benutzer ab.Get the query term from the user.

    Hier erhalten wir einen Abfrageausdruck, den der Benutzer in ein TextBox-Steuerelement namens searchQueryTextBox eingegeben hat:Here we get a query term that the user has entered into a TextBox control called searchQueryTextBox:

    string queryTerm = this.searchQueryTextBox.Text;    
    
  2. Legen Sie die Abfrageoptionen und Suchfilter fest.Set the query options and search filter.

    Abfrageoptionen bestimmen, wie die Suchergebnisse sortiert werden, während durch den Suchfilter festgelegt wird, welche Elemente in den Suchergebnissen erscheinen.Query options determine how the search results are sorted, while the search filter determines which items are included in the search results.

    In diesem Beispiel werden Abfrageoptionen festgelegt, die die Suchergebnisse nach Relevanz und dem Änderungsdatum sortieren.This example sets query options that sort the search results by relevance and then the date modified. Beim Suchfilter handelt es sich um den Abfrageausdruck, den der Benutzer im vorherigen Schritt eingegeben hat: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. Führen Sie die Abfrage aus, und verarbeiten Sie die Ergebnisse.Run the query and process the results.

    Im folgenden Beispiel wird die Suchabfrage in der Heimnetzgruppe ausgeführt, und die Namen aller passenden Dateien werden in einer Liste mit Zeichenfolgen gespeichert.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";
        }
    }    
    

Durchsuchen der Heimnetzgruppe nach den freigegebenen Dateien eines bestimmten BenutzersSearch the HomeGroup for a particular user's shared files

In diesem Abschnitt erfahren Sie, wie Sie nach Heimnetzgruppendateien suchen, die von einem bestimmten Benutzer freigegeben wurden.This section shows you how to find HomeGroup files that are shared by a particular user.

  1. Stellen Sie eine Sammlung von Heimnetzgruppenbenutzern zusammen.Get a collection of HomeGroup users.

    Jeder Ordner auf oberster Ebene in der Heimnetzgruppe repräsentiert einen bestimmten Heimnetzgruppenbenutzer.Each of the first-level folders in the HomeGroup represents an individual HomeGroup user. Um die Sammlung der Heimnetzgruppenbenutzer zu erhalten, rufen Sie also GetFoldersAsync auf, um die Heimnetzgruppenordner der obersten Ebene abzurufen.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. Suchen Sie dann nach dem Ordner des Zielbenutzers, und erstellen Sie eine Dateiabfrage, die auf den Ordner dieses Benutzers eingegrenzt ist.Find the target user's folder, and then create a file query scoped to that user's folder.

    Das folgende Beispiel geht die abgerufenen Ordner durch, um den Ordner des Zielbenutzers zu finden.The following example iterates through the retrieved folders to find the target user's folder. Anschließend legt es die Abfrageoptionen so fest, dass alle Dateien im Ordner gefunden werden, primär nach Relevanz und zweitrangig nach dem Änderungsdatum sortiert.Then, it sets query options to find all files in the folder, sorted first by relevance and then by the date modified. Das Beispiel generiert eine Zeichenfolge, die die Anzahl der gefundenen Dateien zusammen mit den Namen der Dateien ausgibt.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";
                }
            }
        }
    }    
    

Streamen von Videos aus der HeimnetzgruppeStream video from the HomeGroup

Gehen Sie wie folgt vor, um Videoinhalte aus der Heimnetzgruppe zu streamen:Follow these steps to stream video content from the HomeGroup:

  1. Fügen Sie Ihrer App ein „MediaElement“ hinzu.Include a MediaElement in your app.

    Mithilfe von MediaElement können Sie Audio- und Videoinhalte in Ihrer App wiedergeben.A MediaElement lets you play back audio and video content in your app. Weitere Informationen zur Audio- und Videowiedergabe finden Sie unter Erstellen von benutzerdefinierten Transportsteuerelementen und Audio, Video und Kamera.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. Öffnen Sie eine Dateiauswahl für die Heimnetzgruppe, und wenden Sie einen Filter an, der alle Dateien ausschließt, bei denen es sich nicht um Videodateiformate handelt, die Ihre App unterstützt.Open a file picker at the HomeGroup and apply a filter that includes video files in the formats that your app supports.

    In diesem Beispiel werden MP4- und WMV-Dateien für die Dateiauswahl festgelegt.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. Öffnen Sie die Dateiauswahl des Benutzers für den Lesezugriff, und legen Sie den Dateidatenstrom als Quelle für das MediaElement fest. Spielen Sie die Datei anschließend ab.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.
    }