Freigeben über


Behandlung der Dateiaktivierung in einer Windows-App

Ihre App kann sich registrieren, um als Standardhandler für einen bestimmten Dateityp zu werden. Sowohl Windows-Desktopanwendungen als auch WinUI-Apps können als Standarddateihandler registriert werden. Wenn der Benutzer Ihre App als Standardhandler für einen bestimmten Dateityp auswäht, wird die App aktiviert, wenn dieser Dateityp gestartet wird.

Es wird empfohlen, dass Sie sich nur für einen Dateityp registrieren, wenn Sie erwarten, dass alle Dateistarts für diesen Dateityp behandelt werden. Wenn Ihre App den Dateityp nur intern verwenden muss, müssen Sie sich nicht registrieren, um der Standardhandler zu sein. Wenn Sie sich für einen Dateityp registrieren, müssen Sie dem Endbenutzer die Funktionalität bereitstellen, die erwartet wird, wenn Ihre App für diesen Dateityp aktiviert wird. Beispielsweise kann sich eine Bildanzeige-App registrieren, um eine .jpg Datei anzuzeigen. Weitere Informationen zu Dateizuordnungen finden Sie unter Richtlinien für Dateitypen und URIs.

Diese Schritte erklären, wie Sie einen benutzerdefinierten Dateityp, .alsdk, registrieren und wie Sie Ihre App aktivieren, wenn der Benutzer eine .alsdk-Datei startet.

Hinweis

In Windows sind bestimmte URIs und Dateierweiterungen für die Verwendung durch integrierte Apps und das Betriebssystem reserviert. Versuche, Ihre App mit einem reservierten URI oder einer reservierten Dateierweiterung zu registrieren, werden ignoriert. Siehe reservierte URI-Schemanamen und Dateitypen für eine alphabetische Liste von URI-Schemas, die Sie nicht für Ihre Apps registrieren können, da sie entweder reserviert oder verboten sind.

Wichtige APIs

Die folgenden APIs werden in diesem Thema verwendet:

Schritt 1: Angeben des Erweiterungspunkts im Paketmanifest

Die App empfängt Aktivierungsereignisse nur für die im Paketmanifest aufgeführten Dateierweiterungen. Hier erfahren Sie, wie Sie angeben, dass Ihre App die Dateien mit der .alsdk Erweiterung verarbeitet.

  1. Doppelklicken Sie im Projektmappen-Explorer auf "package.appxmanifest", um den Manifest-Designer zu öffnen. Wählen Sie die Registerkarte " Deklarationen " und dann in der Dropdownliste "Verfügbare Deklarationen " die Option "Dateitypzuordnungen" aus, und klicken Sie dann auf "Hinzufügen". Weitere Informationen zu bezeichnern, die von Dateizuordnungen verwendet werden, finden Sie unter "Programmatic Identifiers ".

    Hier ist eine kurze Beschreibung der einzelnen Felder, die Sie im Manifest-Designer ausfüllen können:

Feld Beschreibung
Anzeigename Geben Sie den Anzeigenamen für eine Gruppe von Dateitypen an. Der Anzeigename wird verwendet, um den Dateityp in der Systemsteuerung unter "Standardprogramme festlegen" zu identifizieren.
Logo Geben Sie das Logo an, das zum Identifizieren des Dateityps auf dem Desktop und in der Systemsteuerung "Standardprogramme festlegen" verwendet wird. Wenn kein Logo angegeben ist, wird das kleine Logo der Anwendung verwendet.
Infotipp Geben Sie den Infotipp für eine Gruppe von Dateitypen an. Dieser Tooltip-Text wird angezeigt, wenn der Benutzer auf das Symbol für eine Datei dieses Typs zeigt.
Name Wählen Sie einen Namen für eine Gruppe von Dateitypen aus, die denselben Anzeigenamen, dasselbe Logo, denselben Infotipp und dieselben Bearbeitungskennzeichen teilen. Wählen Sie einen Gruppennamen aus, der über App-Updates hinweg gleich bleiben kann. Hinweis Der Name muss in allen Kleinbuchstaben enthalten sein.
Inhaltstyp Geben Sie den MIME-Inhaltstyp an, z. B. bild/jpeg, für einen bestimmten Dateityp. Wichtiger Hinweis zu zulässigen Inhaltstypen: Hier ist eine alphabetische Liste der MIME-Inhaltstypen, die Sie nicht in das Paketmanifest eingeben können, da sie entweder reserviert oder verboten sind: Application/force-download, application/octet-stream, application/unknown, application/x-msdownload.
Dateityp Geben Sie den Dateityp an, dem ein Punkt vorangestellt ist, um sich dafür zu registrieren, z. B. ".jpeg". Reservierte und verbotene Dateitypen: Siehe Reservierte URI-Schemanamen und Dateitypen für eine alphabetische Liste von Dateitypen für integrierte Apps, die Sie nicht für Ihre WinUI-Apps registrieren können, da sie entweder reserviert oder verboten sind.
  1. Geben Sie alsdk als Namen ein.
  2. Geben Sie .alsdk als Dateityp ein.
  3. Geben Sie "Bilder\Icon.png" als Logo ein.
  4. Drücken Sie STRG+S, um die Änderung in "package.appxmanifest" zu speichern.

Die obigen Schritte fügen dem Paketmanifest ein Erweiterungselement wie dieses hinzu. Die Kategorie "windows.fileTypeAssociation " gibt an, dass die App Dateien mit der .alsdk Erweiterung verarbeitet.

      <Extensions>
        <uap:Extension Category="windows.fileTypeAssociation">
          <uap:FileTypeAssociation Name="alsdk">
            <uap:Logo>images\icon.png</uap:Logo>
            <uap:SupportedFileTypes>
              <uap:FileType>.alsdk</uap:FileType>
            </uap:SupportedFileTypes>
          </uap:FileTypeAssociation>
        </uap:Extension>
      </Extensions>

Schritt 2: Hinzufügen der richtigen Symbole

Apps, die zum Standard für einen Dateityp werden, haben ihre Symbole an verschiedenen Stellen im gesamten System angezeigt. Diese Symbole werden z. B. in:

  • Elementansicht in Windows Explorer, Kontextmenüs und das Menüband
  • Systemsteuerung für Standardprogramme
  • Dateiauswahl
  • Suchergebnisse auf der Startseite

Fügen Sie ein 44x44-Symbol in Ihr Projekt ein, damit Ihr Logo an diesen Stellen angezeigt werden kann. Passen Sie das Erscheinungsbild des App-Kachellogos an, und verwenden Sie die Hintergrundfarbe Ihrer App, anstatt das Symbol transparent zu gestalten. Lassen Sie das Logo auf den Rand erweitern, ohne ihn zu auffüllen. Testen Sie Ihre Symbole auf weißen Hintergründen. Weitere Informationen zu Symbolen finden Sie in den Richtlinien für Kachel- und Symbolressourcen.

Schritt 3: Behandeln des aktivierten Ereignisses

Der OnFileActivated-Ereignishandler empfängt alle Dateiaktivierungsereignisse.

protected override void OnFileActivated(FileActivatedEventArgs args)
{
       // TODO: Handle file activation
       // The number of files received is args.Files.Count
       // The name of the first file is args.Files[0].Name
}
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs const& args)
{
    // TODO: Handle file activation.
    auto numberOfFilesReceived{ args.Files().Size() };
    auto nameOfTheFirstFile{ args.Files().GetAt(0).Name() };
}
void App::OnFileActivated(Windows::ApplicationModel::Activation::FileActivatedEventArgs^ args)
{
    // TODO: Handle file activation
    // The number of files received is args->Files->Size
    // The name of the first file is args->Files->GetAt(0)->Name
}

Hinweis

Stellen Sie beim Starten über den Dateivertrag sicher, dass die Schaltfläche "Zurück" den Benutzer zurück zum Bildschirm führt, auf dem die App gestartet wurde und nicht auf den vorherigen Inhalt der App.

Hinweis

In einer WinUI-App können Sie in App.OnLaunched (oder tatsächlich jederzeit) (AppInstance.GetActivatedEventArgs) aufrufen, um die aktivierten Ereignisargumente abzurufen, und überprüfen Sie sie, um zu bestimmen, wie die App aktiviert wurde. Weitere Informationen zu Lebenszyklusunterschieden zwischen UWP- und WinUI-Apps finden Sie unter Anwendungslebenszyklus-Funktionalitätsmigration .

Es wird empfohlen, für jedes Aktivierungsereignis, das eine neue Seite öffnet, einen neuen XAML-Frame zu erstellen. Auf diese Weise enthält der Navigations-Backstack für den neuen XAML-Frame keine vorherigen Inhalte, die die App möglicherweise im aktuellen Fenster beim Anhalten aufweist. Wenn Sie einen einzelnen XAML-Frame für den Start und für Dateiverträge verwenden möchten, sollten Sie die Seiten im Navigationsjournal des Frames löschen, bevor Sie zu einer neuen Seite navigieren.

Wenn Ihre App über die Dateiaktivierung gestartet wird, sollten Sie die Benutzeroberfläche einschließen, mit der der Benutzer zur obersten Seite der App zurückkehren kann.

Bemerkungen

Die empfangenen Dateien können von einer nicht vertrauenswürdigen Quelle stammen. Es wird empfohlen, den Inhalt einer Datei zu überprüfen, bevor Sie entsprechende Maßnahmen ergreifen.