Condividi tramite


Metodo IShellLinkW::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 per la finestra che shell userà come elemento padre per una finestra di dialogo. Shell visualizza la finestra di dialogo se è necessario 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 viene impostata SLR_NO_UI , la parola di FFlags in ordine elevato può essere impostata su un valore di timeout che specifica la quantità massima di tempo da dedicare alla risoluzione del collegamento. La funzione restituisce se il collegamento non può essere risolto entro la durata del timeout. Se la parola di 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 degli 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 di 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 di 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. Segnala come dirty se la destinazione è una cartella nota e la cartella nota è stata reindirizzata. Questa operazione funziona solo se il percorso di destinazione originale è un percorso o un elenco ID del file system e non un elenco di ID cartella noti con alias.

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 innanzitutto 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 collegamento verrà aggiornato in modo da 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 collegamento è stato modificato e il file deve essere aggiornato.

La risoluzione prevede due approcci per trovare gli oggetti di destinazione. Il primo è il servizio di rilevamento dei collegamenti distribuiti. Se il servizio è disponibile, può trovare un oggetto che si trovava in un volume NTFS versione 5.0 ed è stato spostato in un'altra posizione in tale 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, risolve i tentativi di trovarlo con l'euristica di ricerca. Prima cerca nell'ultima directory nota dell'oggetto un oggetto con un nome diverso, ma gli stessi attributi e gli stessi tempi di creazione dei file. Esegue quindi ricerche ricorsive nelle sottodirectory nelle vicinanze dell'ultima directory nota dell'oggetto. Cerca un oggetto con lo stesso nome o ora 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 di specificare una posizione. Per eliminare la finestra di dialogo, impostare il flag 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)