Freigeben über


IShellLinkA::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 der Benutzer beim Auflösen eines Shelllinks weitere Informationen einfordert.

fFlags

Art: DWORD

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

SLR_NO_UI (0x0001)

0x0001. Zeigen Sie kein Dialogfeld an, wenn der Link nicht aufgelöst werden kann. Wenn SLR_NO_UI festgelegt ist, kann das Wort fFlags in hoher Reihenfolge auf einen Timeoutwert festgelegt werden, der die maximale Zeit angibt, die für das 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 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 seinen Pfad und die Liste der Bezeichner. Wenn SLR_UPDATE festgelegt ist, müssen Sie nicht IPersistFile::IsDirty 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 verteilte Linknachverfolgung.

SLR_NOLINKINFO (0x0040)

0x0040. Deaktivieren Sie die Nachverfolgung verteilter Links. Standardmäßig verfolgt die verteilte Linknachverfolgung Wechselmedien auf mehreren Geräten basierend auf dem Volumenamen nach. Außerdem wird der UNC-Pfad verwendet, um Remotedateisysteme nachzuverfolgen, deren Laufwerkbuchstabe geändert wurde. 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, wenn 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 und keine Aliasliste bekannter Ordner-ID war.

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 dem Link zugeordneten Pfad ab. Wenn das Objekt nicht mehr vorhanden ist oder umbenannt wurde, versucht Resolve , es zu finden. Wenn der Vorgang erfolgreich war und die folgenden Bedingungen erfüllt sind, wird die Datei, aus der das Linkobjekt geladen wurde, aktualisiert, um den neuen Zustand des Linkobjekts widerzuspiegeln.

  • Das SLR_UPDATE-Flag ist festgelegt.
  • Das Ziel wurde verschoben oder umbenannt, wobei der interne Zustand des Shell-Linkobjekts aktualisiert wurde, um auf das neue Ziel zu verweisen.
  • Das Shell-Linkobjekt wurde über IPersistFile aus einer Datei 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 hat zwei Ansätze zum Suchen von Zielobjekten. Die erste ist der Verteilte Linknachverfolgungsdienst. 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-Volume der Version 5.0 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 von verteilten Links nicht verfügbar ist oder das Linkobjekt nicht gefunden werden kann, versucht Resolve , es mit einer Suchheuristik zu finden. Es sucht zuerst im letzten bekannten Verzeichnis des Objekts nach einem Objekt mit einem anderen Namen, aber den gleichen Attributen und der gleichen Dateierstellungszeit. Als Nächstes wird rekursiv nach Unterverzeichnissen in der Nähe des letzten bekannten Verzeichnisses des Objekts gesucht. Es sucht nach einem Objekt mit demselben Namen oder der gleichen Erstellungszeit. Schließlich sucht Resolve nach einem übereinstimmenden Objekt auf dem Desktop und anderen lokalen Volumes. Um die Verwendung der Suchheuristik zu unterdrücken, legen Sie das SLR_NOSEARCH-Flag 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)