Share via


IShellLinkW::Resolve-Methode (shobjidl_core.h)

Versucht, das Ziel eines Shelllinks zu finden, auch wenn er verschoben oder umbenannt wurde.

Syntax

HRESULT Resolve(
  HWND  hwnd,
  DWORD fFlags
);

Parameter

hwnd

Typ: HWND

Ein Handle für das Fenster, das die Shell als übergeordnetes Element für ein Dialogfeld verwendet. Die Shell zeigt das Dialogfeld an, wenn sie den Benutzer beim Auflösen eines Shelllinks zur Eingabe weiterer Informationen auffordern muss.

fFlags

Art: DWORD

Aktionsflags. Für diesen Parameter ist eine Kombination der folgenden Werte gültig.

SLR_NO_UI (0x0001)

0x0001. Kein Dialogfeld anzeigen, wenn der Link nicht aufgelöst werden kann. Wenn SLR_NO_UI festgelegt ist, kann das Wort mit hoher Ordnung von fFlags auf einen Timeoutwert festgelegt werden, der die maximale Zeit angibt, die zum Auflösen des Links aufgewendet werden soll. Die Funktion gibt zurück, wenn der Link nicht innerhalb der Timeoutdauer aufgelöst werden kann. Wenn das Wort mit hoher Reihenfolge auf 0 (null) festgelegt ist, wird die Timeoutdauer auf den Standardwert 3.000 Millisekunden (3 Sekunden) festgelegt. Um einen Wert anzugeben, legen Sie das hohe Wort von fFlags auf die gewünschte Timeoutdauer in Millisekunden fest.

SLR_ANY_MATCH (0x0002)

0x0002. Wird nicht verwendet.

SLR_UPDATE (0x0004)

0x0004. Wenn sich das Linkobjekt geändert hat, aktualisieren Sie den Pfad und die Liste der Bezeichner. Wenn SLR_UPDATE festgelegt ist, müssen Sie IPersistFile::IsDirty nicht aufrufen, um festzustellen, ob sich das Linkobjekt geändert hat.

SLR_NOUPDATE (0x0008)

0x0008. Aktualisieren Sie die Linkinformationen nicht.

SLR_NOSEARCH (0x0010)

0x0010. Führen Sie die Suchheuristik nicht aus.

SLR_NOTRACK (0x0020)

0x0020. Verwenden Sie keine Nachverfolgung verteilter Links.

SLR_NOLINKINFO (0x0040)

0x0040. Deaktivieren sie die Nachverfolgung verteilter Links. Standardmäßig verfolgt die Nachverfolgung von verteilten Links Wechselmedien auf mehreren Geräten basierend auf dem Volumenamen nach. Außerdem wird der UNC-Pfad verwendet, um Remotedateisysteme nachzuverfolgen, deren Laufwerkbuchstabe sich geändert hat. Durch festlegen SLR_NOLINKINFO werden beide Arten der Nachverfolgung deaktiviert.

SLR_INVOKE_MSI (0x0080)

0x0080. Rufen Sie den Windows Installer auf.

SLR_NO_UI_WITH_MSG_PUMP (0x0101)

0x0101. Windows XP und höher.

SLR_OFFER_DELETE_WITHOUT_FILE (0x0200)

0x0200. Windows 7 und höher. Bieten Sie die Option zum Löschen der Verknüpfung an, wenn diese Methode sie nicht auflösen kann, auch wenn die Verknüpfung keine Verknüpfung zu einer Datei ist.

SLR_KNOWNFOLDER (0x0400)

0x0400. Windows 7 und höher. Melden Sie als modifiziert, ob das Ziel ein bekannter Ordner ist und der bekannte Ordner umgeleitet wurde. Dies funktioniert nur, wenn der ursprüngliche Zielpfad ein Dateisystempfad oder eine ID-Liste war und nicht eine Liste mit Aliasnamen bekannter Ordner-ID.

SLR_MACHINE_IN_LOCAL_TARGET (0x0800)

0x0800. Windows 7 und höher. Lösen Sie den Computernamen in UNC-Zielen auf, die auf einen lokalen Computer verweisen. Dieser Wert wird mit SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET verwendet.

SLR_UPDATE_MACHINE_AND_SID (0x1000)

0x1000. Windows 7 und höher. Aktualisieren Sie bei Bedarf die Computer-GUID und die Benutzer-SID.

Rückgabewert

Typ: HRESULT

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Nach der Linkerstellung kann sich der Name oder speicherort des Ziels ändern. Die IShellLink::Resolve-Methode ruft zuerst den Pfad ab, der dem Link zugeordnet ist. Wenn das Objekt nicht mehr vorhanden ist oder umbenannt wurde, versucht Resolve , es zu finden. Wenn die folgenden Bedingungen erfüllt sind, wird die Datei, aus der das Linkobjekt geladen wurde, aktualisiert, um den neuen Zustand des Linkobjekts widerzuspiegeln.

  • Das flag SLR_UPDATE ist festgelegt.
  • Das Ziel wurde verschoben oder umbenannt, wobei der interne Zustand des Shelllinkobjekts aktualisiert wurde, um auf das neue Ziel zu verweisen.
  • Das Shell-Linkobjekt wurde aus einer Datei über IPersistFile geladen.
Der Client kann auch die IPersistFile::IsDirty-Methode aufrufen, um zu bestimmen, ob sich das Linkobjekt geändert hat und die Datei aktualisiert werden muss.

Resolve verfügt über zwei Ansätze zum Auffinden von Zielobjekten. Die erste ist der Nachverfolgungsdienst für verteilte Links. Wenn der Dienst verfügbar ist, kann er ein Objekt finden, das sich auf einem NTFS-Volume der Version 5.0 befand und an einen anderen Speicherort auf diesem Volume verschoben wurde. Es kann auch ein Objekt finden, das auf ein anderes NTFS Version 5.0-Volume verschoben wurde, einschließlich Volumes auf anderen Computern. Um die Verwendung dieses Diensts zu unterdrücken, legen Sie das flag SLR_NOTRACK fest.

Wenn die Nachverfolgung verteilter Links nicht verfügbar ist oder das Linkobjekt nicht gefunden werden kann, versucht Resolve , es mit einer Suchheuristik zu finden. Zuerst wird im letzten bekannten Verzeichnis des Objekts nach einem Objekt mit einem anderen Namen, aber denselben Attributen und der gleichen Dateierstellungszeit gesucht. Als Nächstes durchsucht er rekursiv Unterverzeichnisse in der Nähe des letzten bekannten Verzeichnisses des Objekts. Es sucht nach einem Objekt mit demselben Namen oder der gleichen Erstellungszeit. Abschließend sucht Resolve nach einem übereinstimmenden Objekt auf dem Desktop und anderen lokalen Volumes. Um die Verwendung der Suchheuristik zu unterdrücken, legen Sie das flag SLR_NOSEARCH fest.

Wenn beide Ansätze fehlschlagen, zeigt das System ein Dialogfeld an, in dem der Benutzer zur Eingabe eines Speicherorts aufgefordert wird. Um das Dialogfeld zu unterdrücken, legen Sie das flag SLR_NO_UI fest.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shobjidl_core.h
DLL Shell32.dll (Version 4.0 oder höher)