Shell-Verknüpfungen
Eine Shell-Verknüpfung ist ein Datenobjekt, das Informationen enthält, die für den Zugriff auf ein anderes Objekt im Shell-Namespace verwendet werden, d. h. jedes Objekt, das über Windows Explorer sichtbar ist. Zu den Typen von Objekten, auf die über Shell-Links zugegriffen werden kann, gehören Dateien, Ordner, Datenträgerlaufwerke und Drucker. Eine Shell-Verknüpfung ermöglicht es einem Benutzer oder einer Anwendung, von überall im Namespace aus auf ein Objekt zuzugreifen. Der Benutzer oder die Anwendung muss nicht den aktuellen Namen und die aktuelle Position des Objekts kennen.
Informationen zu Shell-Links
Der Benutzer erstellt einen Shelllink, indem er im Kontextmenü eines Objekts den Befehl Verknüpfung erstellen auswählt. Das System erstellt automatisch ein Symbol für die Shell-Verknüpfung, indem das Symbol des Objekts mit einem kleinen Pfeil (als systemdefiniertes Linküberlagerungssymbol bezeichnet) kombiniert wird, das in der unteren linken Ecke des Symbols angezeigt wird. Eine Shellverknüpfung mit einem Symbol wird als Verknüpfung bezeichnet. Die Begriffe Shell-Verknüpfung und Verknüpfung werden jedoch häufig austauschbar verwendet. In der Regel erstellt der Benutzer Verknüpfungen, um schnellen Zugriff auf Objekte zu erhalten, die in Unterordnern oder in freigegebenen Ordnern auf anderen Computern gespeichert sind. Beispielsweise kann ein Benutzer eine Verknüpfung zu einem Microsoft Word-Dokument erstellen, das sich in einem Unterordner befindet, und das Verknüpfungssymbol auf dem Desktop platzieren. Der Benutzer kann das Dokument dann öffnen, indem er auf das Verknüpfungssymbol doppelklicken. Wenn das Dokument verschoben oder umbenannt wird, nachdem die Verknüpfung erstellt wurde, versucht das System, die Verknüpfung beim nächsten Auswählen des Dokuments zu aktualisieren.
Anwendungen können auch Shelllinks und Verknüpfungen erstellen und verwenden. Beispielsweise kann eine Textverarbeitungsanwendung einen Shell-Link erstellen, um eine Liste der zuletzt verwendeten Dokumente zu implementieren. Eine Anwendung erstellt eine Shell-Verknüpfung mithilfe der IShellLink- Schnittstelle, um ein Shell-Linkobjekt zu erstellen. Die Anwendung verwendet die IPersistFile oder IPersistStream Schnittstelle, um das Objekt in einer Datei oder einem Datenstrom zu speichern.
Anmerkung
Sie können IShellLink- nicht verwenden, um einen Link zu einer URL zu erstellen.
In dieser Übersicht wird die IShellLink- Schnittstelle beschrieben und erläutert, wie sie zum Erstellen und Auflösen von Shell-Links innerhalb einer Microsoft Win32-basierten Anwendung verwendet wird. Da der Entwurf von Shell-Links auf dem OLE-Komponentenobjektmodell (COM) basiert, sollten Sie sich mit den grundlegenden Konzepten der COM- und OLE-Programmierung vertraut machen, bevor Sie diese Übersicht lesen.
Linkauflösung
Wenn ein Benutzer eine Verknüpfung zu einem Objekt erstellt und der Name oder die Position des Objekts später geändert wird, führt das System automatisch Schritte aus, um die Verknüpfung beim nächsten Auswählen des Objekts zu aktualisieren oder aufzulösen. Wenn eine Anwendung jedoch eine Shell-Verknüpfung erstellt und in einem Datenstrom speichert, versucht das System nicht automatisch, die Verknüpfung aufzulösen. Die Anwendung muss den Link auflösen, indem die IShellLink::Resolve-Methode aufgerufen wird.
Wenn eine Shell-Verknüpfung erstellt wird, speichert das System Informationen über den Link. Beim Auflösen eines Links – entweder automatisch oder mit einem IShellLink::Resolve Call – ruft das System zuerst den Pfad ab, der dem Shell-Link zugeordnet ist, indem ein Zeiger auf die Id-Liste der Shelllinks verwendet wird. Weitere Informationen zur Bezeichnerliste finden Sie unter Elementbezeichner und Bezeichnerlisten. Das System sucht nach dem zugeordneten Objekt in diesem Pfad und löst, wenn es das Objekt findet, die Verknüpfung auf. Wenn das System das Objekt nicht finden kann, ruft es den Distributed Link Tracking and Object Identifiers (DLT)-Dienst auf, um das Objekt zu suchen. Wenn der DLT-Dienst nicht verfügbar ist oder das Objekt nicht finden kann, sucht das System im selben Verzeichnis nach einem Objekt mit derselben Dateierstellungszeit und -attribute, jedoch mit einem anderen Namen. Dieser Suchtyp löst einen Link zu einem Objekt auf, das umbenannt wurde.
Wenn das System das Objekt immer noch nicht finden kann, durchsucht es die Verzeichnisse, den Desktop und lokale Volumes, sucht rekursiv nach der Verzeichnisstruktur für ein Objekt mit demselben Namen oder der Erstellungszeit. Wenn das System immer noch keine Übereinstimmung findet, wird ein Dialogfeld angezeigt, in dem der Benutzer zur Eingabe eines Speicherorts aufgefordert wird. Eine Anwendung kann das Dialogfeld unterdrücken, indem sie den SLR_NO_UI Wert in einem Aufruf von IShellLink::Resolveangeben.
Initialisierung der Komponentenobjektbibliothek
Bevor eine Anwendung Verknüpfungen erstellen und auflösen kann, muss sie die Komponentenobjektbibliothek initialisieren, indem sie die CoInitialize-Funktion aufruft. Jeder Aufruf von CoInitialize erfordert einen entsprechenden Aufruf der CoUninitialize-Funktion, die eine Anwendung aufrufen soll, wenn sie beendet wird. Der Aufruf von CoUninitialize stellt sicher, dass die Anwendung erst beendet wird, wenn sie alle ausstehenden Nachrichten empfangen hat.
Location-Independent Namen
Das System stellt standortunabhängige Namen für Shell-Links zu Objekten bereit, die in freigegebenen Ordnern gespeichert sind. Wenn das Objekt lokal gespeichert wird, stellt das System den lokalen Pfad und Dateinamen für das Objekt bereit. Wenn das Objekt remote gespeichert wird, stellt das System einen UNC-Netzwerkressourcennamen (Universal Naming Convention) für das Objekt bereit. Da das System standortunabhängige Namen bereitstellt, kann eine Shell-Verknüpfung als universeller Name für eine Datei dienen, die auf andere Computer übertragen werden kann.
Verknüpfen von Dateien
Wenn der Benutzer eine Verknüpfung zu einem Objekt erstellt, indem er im Kontextmenü des Objekts den Befehl Verknüpfung erstellen auswählt, speichert Windows die Informationen, die für den Zugriff auf das Objekt in einer Verknüpfungsdatei erforderlich sind – eine Binärdatei mit der Dateinamenerweiterung .lnk. Eine Linkdatei enthält die folgenden Informationen:
- Die Position (Pfad) des Objekts, auf das durch die Verknüpfung verwiesen wird (das entsprechende Objekt genannt).
- Das Arbeitsverzeichnis des entsprechenden Objekts.
- Die Liste der Argumente, die das System an das entsprechende Objekt übergibt, wenn die IContextMenu::InvokeCommand-Methode für die Verknüpfung aktiviert wird.
- Der Befehl "Anzeigen", der zum Festlegen des anfänglichen Anzeigezustands des entsprechenden Objekts verwendet wird. Dies ist einer der in ShowWindowbeschriebenen SW_ Werte.
- Die Position (Pfad und Index) des Verknüpfungssymbols.
- Die Beschreibungszeichenfolge der Verknüpfung.
- Die Tastenkombination für die Tastenkombination.
Wenn eine Verknüpfungsdatei gelöscht wird, ist das entsprechende Objekt nicht betroffen.
Wenn Sie eine Verknüpfung zu einer anderen Verknüpfung erstellen, kopiert das System einfach die Verknüpfungsdatei, anstatt eine neue Verknüpfungsdatei zu erstellen. In diesem Fall sind die Tastenkombinationen nicht voneinander unabhängig.
Eine Anwendung kann eine Dateinamenerweiterung als Verknüpfungsdateityp registrieren. Wenn eine Datei eine Dateinamenerweiterung aufweist, die als Verknüpfungsdateityp registriert wurde, fügt das System automatisch das systemdefinierte Linküberlagerungssymbol (einen kleinen Pfeil) zum Symbol der Datei hinzu. Um eine Dateinamenerweiterung als Verknüpfungsdateityp zu registrieren, müssen Sie der Registrierungsbeschreibung der Dateinamenerweiterung den IsShortcut-Wert hinzufügen, wie im folgenden Beispiel gezeigt. Beachten Sie, dass die Shell neu gestartet werden muss, damit das Overlaysymbol wirksam wird. IsShortcut hat keinen Datenwert.
HKEY_CLASSES_ROOT
.xyz
(Default) = XYZApp
XYZApp
IsShortcut
Verknüpfungsnamen
Der Name der Verknüpfung, bei der es sich um eine Zeichenfolge handelt, die unterhalb des Shelllinksymbols angezeigt wird, ist tatsächlich der Dateiname der Verknüpfung selbst. Der Benutzer kann die Beschreibungszeichenfolge bearbeiten, indem er sie auswählt und eine neue Zeichenfolge eingibt.
Speicherort von Verknüpfungen im Namespace
Eine Verknüpfung kann auf dem Desktop oder an einer beliebigen Stelle im Shell-Namespace vorhanden sein. Ebenso kann das Objekt, das der Verknüpfung zugeordnet ist, auch an einer beliebigen Stelle im Shell-Namespace vorhanden sein. Eine Anwendung kann die IShellLink::SetPath--Methode verwenden, um den Pfad und Dateinamen für das zugeordnete Objekt festzulegen, und die IShellLink::GetPath-Methode, um den aktuellen Pfad und Dateinamen für das Objekt abzurufen.
Arbeitsverzeichnis für Verknüpfungen
Das Arbeitsverzeichnis ist das Verzeichnis, in dem das entsprechende Objekt einer Verknüpfung Dateien lädt oder speichert, wenn der Benutzer kein bestimmtes Verzeichnis identifiziert. Eine Linkdatei enthält den Namen des Arbeitsverzeichnisses für das entsprechende Objekt. Eine Anwendung kann den Namen des Arbeitsverzeichnisses für das entsprechende Objekt mithilfe der IShellLink::SetWorkingDirectory Methode festlegen und den Namen des aktuellen Arbeitsverzeichnisses für das entsprechende Objekt mithilfe der IShellLink::GetWorkingDirectory Methode abrufen.
Befehlszeilenargumente für Tastenkombinationen
Eine Verknüpfungsdatei enthält Befehlszeilenargumente, die die Shell an das entsprechende Objekt übergibt, wenn der Benutzer den Link auswählt. Eine Anwendung kann die Befehlszeilenargumente für eine Verknüpfung mithilfe der IShellLink::SetArguments--Methode festlegen. Es ist nützlich, Befehlszeilenargumente festzulegen, wenn die entsprechende Anwendung, z. B. ein Linker oder Compiler, spezielle Flags als Argumente akzeptiert. Eine Anwendung kann die Befehlszeilenargumente aus einer Verknüpfung mithilfe der IShellLink::GetArguments Methode abrufen.
Befehle für Tastenkombinationen anzeigen
Wenn der Benutzer auf eine Verknüpfung doppelklicken, startet das System die anwendung, die dem entsprechenden Objekt zugeordnet ist, und legt den anfänglichen Anzeigestatus der Anwendung basierend auf dem durch die Verknüpfung angegebenen Befehl "Anzeigen" fest. Der Befehl "Anzeigen" kann eine der SW_ Werte sein, die in der Beschreibung der ShowWindow--Funktion enthalten sind. Eine Anwendung kann den Befehl "Anzeigen" für eine Verknüpfung mithilfe der IShellLink::SetShowCmd- Methode festlegen und den aktuellen Anzeigebefehl mithilfe der IShellLink::GetShowCmd--Methode abrufen.
Verknüpfungssymbole
Wie bei anderen Shell-Objekten weist eine Verknüpfung ein Symbol auf. Der Benutzer greift auf das Objekt zu, das einer Verknüpfung zugeordnet ist, indem er auf das Symbol der Verknüpfung doppelklicken. Wenn das System ein Symbol für eine Verknüpfung erstellt, verwendet es die Bitmap des entsprechenden Objekts und fügt das systemdefinierte Linküberlagerungssymbol (einen kleinen Pfeil) zur unteren linken Ecke hinzu. Eine Anwendung kann den Speicherort (Pfad und Index) eines Verknüpfungssymbols mithilfe der IShellLink::SetIconLocation-Methode festlegen. Eine Anwendung kann diesen Speicherort mithilfe der IShellLink::GetIconLocation-Methode abrufen.
Kurzbeschreibungen
Tastenkombinationen weisen Beschreibungen auf, aber der Benutzer sieht sie nie. Eine Anwendung kann eine Beschreibung verwenden, um textinformationen zu speichern. Beschreibungen werden mithilfe der IShellLink::SetDescription Methode festgelegt und mithilfe der IShellLink::GetDescription--Methode abgerufen.
Tastenkombinationen für Tastenkombinationen
Einem Tastenkombinationsobjekt kann eine Tastenkombination zugeordnet sein. Tastenkombinationen ermöglichen es einem Benutzer, eine Tastenkombination zu drücken, um eine Tastenkombination zu aktivieren. Eine Anwendung kann die Tastenkombination für eine Tastenkombination mithilfe der IShellLink::SetHotkey--Methode festlegen und die aktuelle Tastenkombination mithilfe der IShellLink::GetHotkey-Methode abrufen.
Elementbezeichner und Bezeichnerlisten
Die Shell verwendet Objektbezeichner im Shell-Namespace. Alle objekte, die in der Shell (Dateien, Verzeichnisse, Server, Arbeitsgruppen usw.) sichtbar sind, weisen eindeutige Bezeichner zwischen den Objekten innerhalb ihres übergeordneten Ordners auf. Diese Bezeichner werden als Elementbezeichner bezeichnet, und sie weisen den SHITEMID- Datentyp auf, wie in der Headerdatei "Shtypes.h" definiert. Ein Elementbezeichner ist ein Bytestream mit variabler Länge, der Informationen enthält, die ein Objekt innerhalb eines Ordners identifizieren. Nur der Ersteller eines Elementbezeichners kennt den Inhalt und das Format des Bezeichners. Der einzige Teil eines Elementbezeichners, den die Shell verwendet, ist die erste zwei Byte, die die Größe des Bezeichners angeben.
Jeder übergeordnete Ordner verfügt über einen eigenen Elementbezeichner, der ihn innerhalb eines eigenen übergeordneten Ordners identifiziert. Daher kann jedes Shell-Objekt durch eine Liste von Elementbezeichnern eindeutig identifiziert werden. Ein übergeordneter Ordner behält eine Liste der Bezeichner für die darin enthaltenen Elemente bei. Die Liste weist den datentyp ITEMIDLIST auf. Elementbezeichnerlisten werden von der Shell zugewiesen und können über Shell-Schnittstellen übergeben werden, z. B. IShellFolder-. Es ist wichtig zu beachten, dass jeder Bezeichner in einer Elementbezeichnerliste nur im Kontext des übergeordneten Ordners aussagekräftig ist.
Eine Anwendung kann die Elementbezeichnerliste einer Verknüpfung mithilfe der IShellLink::SetIDList--Methode festlegen. Diese Methode ist hilfreich, wenn Sie eine Verknüpfung zu einem Objekt festlegen, das keine Datei ist, z. B. ein Drucker oder laufwerk. Eine Anwendung kann die Elementbezeichnerliste einer Verknüpfung mithilfe der IShellLink::GetIDList Methode abrufen.
Verwenden von Shell-Links
Dieser Abschnitt enthält Beispiele, die veranschaulichen, wie Verknüpfungen innerhalb einer Win32-basierten Anwendung erstellt und aufgelöst werden. In diesem Abschnitt wird davon ausgegangen, dass Sie mit der Programmierung von Win32, C++ und OLE COM vertraut sind.
Erstellen einer Verknüpfung und einer Ordnerverknüpfung zu einer Datei
Die CreateLink-Beispielfunktion im folgenden Beispiel erstellt eine Verknüpfung. Die Parameter enthalten einen Zeiger auf den Namen der Zu verknüpfenden Datei, einen Zeiger auf den Namen der Verknüpfung, die Sie erstellen, und einen Zeiger auf die Beschreibung des Links. Die Beschreibung besteht aus der Zeichenfolge "Verknüpfung zum Dateinamen", wobei Dateiname der Name der Datei ist, mit der eine Verknüpfung hergestellt werden soll.
Um eine Ordnerverknüpfung mithilfe der CreateLink-Beispielfunktion zu erstellen, rufen Sie CoCreateInstance mithilfe von CLSID_FolderShortcut anstelle von CLSID_ShellLink auf (CLSID_FolderShortcut unterstützt IShellLink). Alle anderen Code bleiben gleich.
Da CreateLink die CoCreateInstance--Funktion aufruft, wird davon ausgegangen, dass die CoInitialize- funktion bereits aufgerufen wurde. CreateLink verwendet die IPersistFile Schnittstelle zum Speichern der Verknüpfung und der IShellLink- Schnittstelle zum Speichern des Dateinamens und der Beschreibung.
// CreateLink - Uses the Shell's IShellLink and IPersistFile interfaces
// to create and store a shortcut to the specified object.
//
// Returns the result of calling the member functions of the interfaces.
//
// Parameters:
// lpszPathObj - Address of a buffer that contains the path of the object,
// including the file name.
// lpszPathLink - Address of a buffer that contains the path where the
// Shell link is to be stored, including the file name.
// lpszDesc - Address of a buffer that contains a description of the
// Shell link, stored in the Comment field of the link
// properties.
#include "stdafx.h"
#include "windows.h"
#include "winnls.h"
#include "shobjidl.h"
#include "objbase.h"
#include "objidl.h"
#include "shlguid.h"
HRESULT CreateLink(LPCWSTR lpszPathObj, LPCSTR lpszPathLink, LPCWSTR lpszDesc)
{
HRESULT hres;
IShellLink* psl;
// Get a pointer to the IShellLink interface. It is assumed that CoInitialize
// has already been called.
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl);
if (SUCCEEDED(hres))
{
IPersistFile* ppf;
// Set the path to the shortcut target and add the description.
psl->SetPath(lpszPathObj);
psl->SetDescription(lpszDesc);
// Query IShellLink for the IPersistFile interface, used for saving the
// shortcut in persistent storage.
hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);
if (SUCCEEDED(hres))
{
WCHAR wsz[MAX_PATH];
// Ensure that the string is Unicode.
MultiByteToWideChar(CP_ACP, 0, lpszPathLink, -1, wsz, MAX_PATH);
// Add code here to check return value from MultiByteWideChar
// for success.
// Save the link by calling IPersistFile::Save.
hres = ppf->Save(wsz, TRUE);
ppf->Release();
}
psl->Release();
}
return hres;
Auflösen einer Verknüpfung
Eine Anwendung muss möglicherweise auf eine zuvor erstellte Verknüpfung zugreifen und diese bearbeiten. Dieser Vorgang wird als Auflösen der Verknüpfung bezeichnet.
Die anwendungsdefinierte ResolveIt-Funktion im folgenden Beispiel löst eine Verknüpfung auf. Zu den Parametern gehören ein Fensterhandle, ein Zeiger auf den Pfad der Verknüpfung und die Adresse eines Puffers, der den neuen Pfad zum Objekt empfängt. Das Fensterhandle identifiziert das übergeordnete Fenster für alle Meldungsfelder, die die Shell möglicherweise anzeigen muss. Beispielsweise kann die Shell ein Meldungsfeld anzeigen, wenn sich der Link auf nicht freigegebenen Medien befindet, wenn Netzwerkprobleme auftreten, wenn der Benutzer eine Diskette einfügen muss usw.
Die ResolveIt-Funktion ruft die CoCreateInstance-Funktion auf und geht davon aus, dass die CoInitialize- funktion bereits aufgerufen wurde. Beachten Sie, dass ResolveIt die IPersistFile Schnittstelle zum Speichern der Linkinformationen verwenden muss. IPersistFile- wird vom IShellLink--Objekt implementiert. Die Verknüpfungsinformationen müssen geladen werden, bevor die Pfadinformationen abgerufen werden, die weiter unten im Beispiel gezeigt werden. Wenn die Verknüpfungsinformationen nicht geladen werden, schlägt der Aufruf der IShellLink::GetPath und IShellLink::GetDescription Memberfunktionen fehl.
// ResolveIt - Uses the Shell's IShellLink and IPersistFile interfaces
// to retrieve the path and description from an existing shortcut.
//
// Returns the result of calling the member functions of the interfaces.
//
// Parameters:
// hwnd - A handle to the parent window. The Shell uses this window to
// display a dialog box if it needs to prompt the user for more
// information while resolving the link.
// lpszLinkFile - Address of a buffer that contains the path of the link,
// including the file name.
// lpszPath - Address of a buffer that receives the path of the link
target, including the file name.
// lpszDesc - Address of a buffer that receives the description of the
// Shell link, stored in the Comment field of the link
// properties.
#include "stdafx.h"
#include "windows.h"
#include "shobjidl.h"
#include "shlguid.h"
#include "strsafe.h"
HRESULT ResolveIt(HWND hwnd, LPCSTR lpszLinkFile, LPWSTR lpszPath, int iPathBufferSize)
{
HRESULT hres;
IShellLink* psl;
WCHAR szGotPath[MAX_PATH];
WCHAR szDescription[MAX_PATH];
WIN32_FIND_DATA wfd;
*lpszPath = 0; // Assume failure
// Get a pointer to the IShellLink interface. It is assumed that CoInitialize
// has already been called.
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl);
if (SUCCEEDED(hres))
{
IPersistFile* ppf;
// Get a pointer to the IPersistFile interface.
hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
if (SUCCEEDED(hres))
{
WCHAR wsz[MAX_PATH];
// Ensure that the string is Unicode.
MultiByteToWideChar(CP_ACP, 0, lpszLinkFile, -1, wsz, MAX_PATH);
// Add code here to check return value from MultiByteWideChar
// for success.
// Load the shortcut.
hres = ppf->Load(wsz, STGM_READ);
if (SUCCEEDED(hres))
{
// Resolve the link.
hres = psl->Resolve(hwnd, 0);
if (SUCCEEDED(hres))
{
// Get the path to the link target.
hres = psl->GetPath(szGotPath, MAX_PATH, (WIN32_FIND_DATA*)&wfd, SLGP_SHORTPATH);
if (SUCCEEDED(hres))
{
// Get the description of the target.
hres = psl->GetDescription(szDescription, MAX_PATH);
if (SUCCEEDED(hres))
{
hres = StringCbCopy(lpszPath, iPathBufferSize, szGotPath);
if (SUCCEEDED(hres))
{
// Handle success
}
else
{
// Handle the error
}
}
}
}
}
// Release the pointer to the IPersistFile interface.
ppf->Release();
}
// Release the pointer to the IShellLink interface.
psl->Release();
}
return hres;
}
Erstellen einer Verknüpfung zu einem Nichtfile-Objekt
Das Erstellen einer Verknüpfung zu einem Nichtdateiobjekt, z. B. einem Drucker, ähnelt dem Erstellen einer Verknüpfung zu einer Datei, mit der Ausnahme, dass Sie nicht den Pfad für die Datei festlegen, sondern die Bezeichnerliste auf den Drucker festlegen müssen. Rufen Sie zum Festlegen der Bezeichnerliste die IShellLink::SetIDList Methode auf, und geben Sie die Adresse einer Bezeichnerliste an.
Jedes Objekt im Namespace der Shell verfügt über einen Elementbezeichner. Die Shell verkettet häufig Elementbezeichner in null-beendete Listen, die aus einer beliebigen Anzahl von Elementbezeichnern bestehen. Weitere Informationen zu Elementbezeichnern finden Sie unter Elementbezeichner und Bezeichnerlisten.
Wenn Sie eine Verknüpfung zu einem Element festlegen müssen, das keinen Dateinamen aufweist, z. B. einen Drucker, haben Sie bereits einen Zeiger auf die IShellFolder- Schnittstelle des Objekts. IShellFolder- wird zum Erstellen von Namespaceerweiterungen verwendet.
Sobald Sie über den Klassenbezeichner für IShellFolder-verfügen, können Sie die CoCreateInstance-funktion aufrufen, um die Adresse der Schnittstelle abzurufen. Anschließend können Sie die Schnittstelle aufrufen, um die Objekte im Ordner aufgezählt und die Adresse des Elementbezeichners für das gesuchte Objekt abzurufen. Schließlich können Sie die Adresse in einem Aufruf der IShellLink::SetIDList Memberfunktion verwenden, um eine Verknüpfung mit dem Objekt zu erstellen.