ICustomDestinationList::AppendCategory-Methode (shobjidl_core.h)
Definiert eine benutzerdefinierte Kategorie und die darin enthaltenen Ziele zur Aufnahme in eine benutzerdefinierte Sprungliste.
Syntax
HRESULT AppendCategory(
[in] LPCWSTR pszCategory,
[in] IObjectArray *poa
);
Parameter
[in] pszCategory
Typ: LPCWSTR
Ein Zeiger auf eine Zeichenfolge, die den Anzeigenamen der benutzerdefinierten Kategorie enthält. Diese Zeichenfolge wird in der Kopfzeile der Kategorie in der Sprungliste angezeigt. Die Zeichenfolge kann direkt den Anzeigenamen enthalten, oder es kann sich um eine indirekte Zeichenfolgendarstellung wie "@shell32.dll,-1324" handeln, um eine gespeicherte Zeichenfolge zu verwenden. Eine indirekte Zeichenfolge ermöglicht die Anzeige des Kategorieheaders in der ausgewählten Sprache des Benutzers.
[in] poa
Typ: IObjectArray*
Ein Zeiger auf ein IObjectArray , das ein oder mehrere IShellItem-Objekte darstellt, die die Ziele in der Kategorie darstellen. Einige Ziele in der Liste werden möglicherweise auch durch IShellLink-Objekte dargestellt, wenn auch seltener.
Rückgabewert
Typ: HRESULT
Gibt bei erfolgreicher Ausführung S_OK oder andernfalls einen Fehlerwert zurück.
Wenn der Aufruf von AppendCategory versucht, ein Element hinzuzufügen, das sich in der Liste der entfernten Ziele befindet, das vom Aufruf von BeginList abgerufen wurde, der die Sitzung initiiert hat, schlägt der Aufruf von AppendCategory fehl.
Wenn AppendCategory versucht, ein IShellItem hinzuzufügen, das die Anwendung nicht für die Verarbeitung registriert ist, schlägt der Aufruf fehl.
AppendCategory kann fehlschlagen, wenn eine Datenschutzeinstellung Gruppenrichtlinie oder Benutzerdatenschutz aktiviert ist. Benutzerdefinierte Kategorien enthalten benutzerspezifische Elemente, die auf der individuellen Nutzung basieren, was unter diesen Datenschutzeinstellungen nicht zulässig ist.
Eine Einstellung zum Datenschutz Gruppenrichtlinie oder Benutzerdatenschutz führt nicht zu einem Fehler in einer anderen ICustomDestinationList-Methode. Aufgaben sind nicht benutzerspezifisch. AppendKnownCategory führt nicht zur Anzeige der Kategorien Zuletzt verwendet oder Häufig , da diese keine Daten enthalten, aber der Methodenaufruf gibt keinen Fehlercode zurück.
Im Falle eines Fehlercodes in AppendCategory, der durch datenschutzbedingte Gruppenrichtlinie oder Benutzerdatenschutzeinstellungen (E_ACCESSDENIED) verursacht wird, sollte die Anwendung weiterhin Aufgaben aktualisieren und CommitList aufrufen.
Wenn keine Dateitypregistrierung für die zugeordnete Anwendung gefunden wurde, gibt AppendCategory HRESULT 0x80040F03 zurück. Dies kann darauf resultieren, dass eine Anwendung den Dateityp nicht registriert, den sie der Sprungliste hinzufügen möchte, oder aus einem Problem in der Registrierung, z. B. dass die AppUserModelID nicht bereitgestellt wird, wenn die Anwendung eine explizite AppUserModelID verwendet.
Hinweise
Sie müssen BeginList aufrufen, bevor Sie diese Methode aufrufen.
Wenn eine Anwendung eine benutzerdefinierte Kategorie bereitstellt, übernimmt diese Anwendung die Verantwortung für das Auffüllen. Der Kategorieinhalt sollte weiterhin benutzerspezifisch sein und auf dem Verlauf und den Aktionen des Benutzers basieren, aber mithilfe einer benutzerdefinierten Kategorie kann eine Anwendung bestimmen, was nachverfolgt werden soll und was ignoriert werden soll. Für instance können verschiedene Szenarien einbezogen werden, wenn unterschiedliche Anwendungsoptionen ausgewählt werden. Beispielsweise kann ein Audioprogramm festlegen, dass nur kürzlich wiedergegebene Alben enthalten sind und kürzlich wiedergegebene einzelne Titel ignoriert werden. Eine Anwendung kann auch einfach über einen auf ihre spezifische Verwendung zugeschnittenen Nutzungsnachverfolgungsalgorithmus verfügen, der bessere Ergebnisse liefert als die Standardalgorithmen des Systems.
Eine Anwendung kann AppendCategory in einer Listenerstellungssitzung mehrmals aufrufen, um mehrere benutzerdefinierte Kategorien hinzuzufügen. In diesem Fall sollten die Kategorien so gestaltet werden, dass sich ihre Inhalte gegenseitig ausschließen. Jede benutzerdefinierte Kategorie sollte um ein bestimmtes Szenario herum erstellt werden, sodass Elemente nicht zwischen ihnen dupliziert werden.
Kategorien in einer benutzerdefinierten Sprungliste, einschließlich der bekannten Kategorien Zuletzt oder Häufig , werden in der Reihenfolge angezeigt, in der sie hinzugefügt werden, wobei die letzten Elemente am Ende der Liste hinzugefügt werden. Wenn nicht genügend Platz zum Anzeigen aller Einträge vorhanden ist, werden die letzten Einträge in der Liste zuerst vom Bildschirm entfernt. Daher sollten zuerst die wichtigsten Kategorien hinzugefügt werden, um ihre beste Chance zu gewährleisten, immer angezeigt zu werden. Ziele innerhalb der Kategorie werden in der Reihenfolge angezeigt, in der sie im IObjectArray-Objekt gespeichert werden, auf das poa verweist.
Der Benutzer entscheidet sich möglicherweise, eines oder mehrere der in der benutzerdefinierten Kategorie bereitgestellten Ziele an die Sprungliste anzuheften. Die Liste der angehefteten Ziele ist für die Anwendung nicht verfügbar. Duplizierung wird jedoch durch die Benutzeroberfläche verhindert, sodass keine zusätzliche Aktion der Anwendung erforderlich ist. Visuell wechselt ein angeheftetes Element in den Angehefteten Abschnitt der Sprungliste und verschwindet von seinem ursprünglichen Speicherort.
Ein erfolgreicher Aufruf von AppendCategory garantiert nicht, dass diese Elemente angezeigt werden. Eine beliebige Anzahl von Zielen, die über den Wert hinzugefügt werden, auf den der parameter pcMinItems in ICustomDestinationList::BeginList verweist, werden nicht angezeigt. Die Angeheftete Kategorie hat Vorrang vor allen anderen Ziellisten. Die Angeheftete Liste wird angezeigt, dann wird der verbleibende Speicherplatz den anderen Ziellisten zugeordnet. Es ist möglich, dass ein Benutzer genügend Ziele an die Sprungliste anheften kann, damit keine anderen Ziele angezeigt werden. Andere Faktoren, z. B. eine reduzierte Bildschirmauflösung oder ein erhöhter Schriftgrad, können auch dazu führen, dass von der Anwendung bereitgestellte Ziele aus der Liste abgeschnitten werden. Die Anwendung hat keine Möglichkeit, diese Situationen vorherzusagen und wird nicht benachrichtigt, wenn sie auftreten. Die Anwendung muss sich lediglich darüber im Klaren sein, dass die Möglichkeit besteht. Da das Abschneiden der Zielliste oder -listen von unten nach oben erfolgt, sollte die Anwendung die wichtigsten Kategorien und Ziele an den Anfang der Liste setzen, damit sie die besten Chancen haben, angezeigt zu werden.
Während einer Sitzung, die mit BeginList beginnt und mit CommitList endet, können Sie AppendCategory mehrmals aufrufen. Wenn einer dieser Aufrufe fehlschlägt, weil versucht wird, eine Kategorie hinzuzufügen, die ein Element in der Liste der entfernten Elemente enthält, wird die Liste der entfernten Elemente durch den Aufruf von CommitList nicht gelöscht. Damit die Liste der entfernten Elemente gelöscht wird, müssen alle Aufrufe von AppendCategory in einer Sitzung erfolgreich zurückgegeben werden.
IShellLink-Instanzen , die über das IObjectArray bereitgestellt werden, auf das von poa verwiesen wird, müssen Folgendes bereitstellen:
- Entweder ein Zeiger auf eine Elementbezeichnerliste (PIDL) (SetIDList) oder den Zielpfad (SetPath oder SetRelativePath)
- Befehlszeilenargumente (SetArguments)
- Symbolspeicherort (SetIconLocation)
Optional kann das Beschreibungsfeld (SetDescription) so festgelegt werden, dass eine benutzerdefinierte QuickInfo für das Element in der Sprungliste bereitgestellt wird.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 7 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | shobjidl_core.h (shobjidl.h einschließen) |
Bibliothek | Shell32.lib |
DLL | Shell32.dll (Version 6.1 oder höher) |
Weitere Informationen
ICustomDestinationList::AddUserTasks
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für