Metodo IShellLinkA::Resolve (shobjidl_core.h)

Tenta di trovare la destinazione di un collegamento shell, anche se è stata spostata o rinominata.

Sintassi

HRESULT Resolve(
  HWND  hwnd,
  DWORD fFlags
);

Parametri

hwnd

Tipo: HWND

Handle alla finestra che shell userà come padre per una finestra di dialogo. La shell visualizza la finestra di dialogo se deve richiedere all'utente altre informazioni durante la risoluzione di un collegamento shell.

fFlags

Tipo: DWORD

Flag di azione. Questo parametro può essere una combinazione dei valori seguenti.

SLR_NO_UI (0x0001)

0x0001. Non visualizzare una finestra di dialogo se il collegamento non può essere risolto. Quando SLR_NO_UI è impostato, è possibile impostare la parola ad ordine elevato di fFlags su un valore di timeout che specifica la quantità massima di tempo da trascorrere per la risoluzione del collegamento. La funzione restituisce se il collegamento non può essere risolto entro la durata del timeout. Se la parola con ordine elevato è impostata su zero, la durata del timeout verrà impostata sul valore predefinito di 3.000 millisecondi (3 secondi). Per specificare un valore, impostare la parola alta di fFlags sulla durata di timeout desiderata, in millisecondi.

SLR_ANY_MATCH (0x0002)

0x0002. Non usato.

SLR_UPDATE (0x0004)

0x0004. Se l'oggetto collegamento è stato modificato, aggiornare il percorso e l'elenco di identificatori. Se SLR_UPDATE è impostato, non è necessario chiamare IPersistFile::IsDirty per determinare se l'oggetto collegamento è stato modificato.

SLR_NOUPDATE (0x0008)

0x0008. Non aggiornare le informazioni sul collegamento.

SLR_NOSEARCH (0x0010)

0x0010. Non eseguire l'euristica della ricerca.

SLR_NOTRACK (0x0020)

0x0020. Non usare il rilevamento dei collegamenti distribuiti.

SLR_NOLINKINFO (0x0040)

0x0040. Disabilitare il rilevamento dei collegamenti distribuiti. Per impostazione predefinita, il rilevamento dei collegamenti distribuiti tiene traccia dei supporti rimovibili in più dispositivi in base al nome del volume. Usa anche il percorso UNC per tenere traccia dei file system remoti la cui lettera di unità è stata modificata. L'impostazione SLR_NOLINKINFO disabilita entrambi i tipi di rilevamento.

SLR_INVOKE_MSI (0x0080)

0x0080. Chiamare Windows Installer.

SLR_NO_UI_WITH_MSG_PUMP (0x0101)

0x0101. Windows XP e versioni successive.

SLR_OFFER_DELETE_WITHOUT_FILE (0x0200)

0x0200. Windows 7 e versioni successive. Offrire l'opzione per eliminare il collegamento quando questo metodo non è in grado di risolverlo, anche se il collegamento non è un collegamento a un file.

SLR_KNOWNFOLDER (0x0400)

0x0400. Windows 7 e versioni successive. Report come sporco se la destinazione è una cartella nota e la cartella nota è stata reindirizzata. Questo funziona solo se il percorso di destinazione originale era un percorso o un elenco ID file system e non un elenco ID cartella noto aliased.

SLR_MACHINE_IN_LOCAL_TARGET (0x0800)

0x0800. Windows 7 e versioni successive. Risolvere il nome del computer nelle destinazioni UNC che puntano a un computer locale. Questo valore viene usato con SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET.

SLR_UPDATE_MACHINE_AND_SID (0x1000)

0x1000. Windows 7 e versioni successive. Aggiornare il GUID del computer e il SID utente, se necessario.

Valore restituito

Tipo: HRESULT

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Dopo la creazione del collegamento, il nome o la posizione della destinazione possono cambiare. Il metodo IShellLink::Resolve recupera prima il percorso associato al collegamento. Se l'oggetto non è più presente o è stato rinominato, Resolve tenterà di trovarlo. In caso di esito positivo e vengono soddisfatte le condizioni seguenti, il file da cui è stato caricato l'oggetto di collegamento verrà aggiornato per riflettere il nuovo stato dell'oggetto collegamento.

  • Il flag SLR_UPDATE è impostato.
  • La destinazione è stata spostata o rinominata, aggiornando lo stato interno dell'oggetto collegamento shell per fare riferimento alla nuova destinazione.
  • L'oggetto collegamento shell è stato caricato da un file tramite IPersistFile.
Il client può anche chiamare il metodo IPersistFile::IsDirty per determinare se l'oggetto link è stato modificato e il file deve essere aggiornato.

Resolve ha due approcci per trovare oggetti di destinazione. Il primo è il servizio di rilevamento dei collegamenti distribuito. Se il servizio è disponibile, può trovare un oggetto in un volume NTFS versione 5.0 ed è stato spostato in un'altra posizione nel volume. Può anche trovare un oggetto spostato in un altro volume NTFS versione 5.0, inclusi i volumi in altri computer. Per eliminare l'uso di questo servizio, impostare il flag di SLR_NOTRACK .

Se il rilevamento dei collegamenti distribuiti non è disponibile o non riesce a trovare l'oggetto collegamento, risolvere i tentativi di trovarlo con l'heuristica di ricerca. Cerca prima di tutto nell'ultima directory nota dell'oggetto per un oggetto con un nome diverso, ma gli stessi attributi e l'ora di creazione di file. Successivamente, esegue ricerche ricorsive nelle sottodirectory nelle vicinanze dell'ultima directory nota dell'oggetto. Cerca un oggetto con lo stesso nome o tempo di creazione. Infine, Resolve cerca un oggetto corrispondente sul desktop e altri volumi locali. Per eliminare l'uso dell'euristica di ricerca, impostare il flag di SLR_NOSEARCH .

Se entrambi gli approcci hanno esito negativo, il sistema visualizzerà una finestra di dialogo che richiede all'utente una posizione. Per eliminare la finestra di dialogo, impostare il flag di SLR_NO_UI .

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shobjidl_core.h
DLL Shell32.dll (versione 4.0 o successiva)