Método IShellLinkA::Resolve (shobjidl_core.h)

Tenta localizar o destino de um link do Shell, mesmo que ele tenha sido movido ou renomeado.

Sintaxe

HRESULT Resolve(
  HWND  hwnd,
  DWORD fFlags
);

Parâmetros

hwnd

Digite: HWND

Um identificador para a janela que o Shell usará como pai para uma caixa de diálogo. O Shell exibirá a caixa de diálogo se precisar solicitar ao usuário mais informações ao resolver um link do Shell.

fFlags

Tipo: DWORD

Sinalizadores de ação. Esse parâmetro pode ser uma combinação dos seguintes valores.

SLR_NO_UI (0x0001)

0x0001. Não exiba uma caixa de diálogo se o link não puder ser resolvido. Quando SLR_NO_UI é definido, a palavra de alta ordem fFlags pode ser definida como um valor de tempo limite que especifica a quantidade máxima de tempo a ser gasto para resolver o link. A função retornará se o link não puder ser resolvido dentro da duração do tempo limite. Se a palavra de alta ordem for definida como zero, a duração do tempo limite será definida como o valor padrão de 3.000 milissegundos (3 segundos). Para especificar um valor, defina a palavra alta de fFlags como a duração de tempo limite desejada, em milissegundos.

SLR_ANY_MATCH (0x0002)

0x0002. Não usado.

SLR_UPDATE (0x0004)

0x0004. Se o objeto de link tiver sido alterado, atualize o caminho e a lista de identificadores. Se SLR_UPDATE estiver definido, você não precisará chamar IPersistFile::IsDirty para determinar se o objeto de link foi alterado.

SLR_NOUPDATE (0x0008)

0x0008. Não atualize as informações do link.

SLR_NOSEARCH (0x0010)

0x0010. Não execute a heurística de pesquisa.

SLR_NOTRACK (0x0020)

0x0020. Não use o acompanhamento de link distribuído.

SLR_NOLINKINFO (0x0040)

0x0040. Desabilitar o acompanhamento de link distribuído. Por padrão, o rastreamento de link distribuído rastreia a mídia removível em vários dispositivos com base no nome do volume. Ele também usa o caminho UNC para rastrear sistemas de arquivos remotos cuja letra da unidade foi alterada. Definir SLR_NOLINKINFO desabilita os dois tipos de acompanhamento.

SLR_INVOKE_MSI (0x0080)

0x0080. Chame o Windows Installer.

SLR_NO_UI_WITH_MSG_PUMP (0x0101)

0x0101. Windows XP e posterior.

SLR_OFFER_DELETE_WITHOUT_FILE (0x0200)

0x0200. Windows 7 e posterior. Ofereça a opção de excluir o atalho quando esse método não puder resolve-lo, mesmo que o atalho não seja um atalho para um arquivo.

SLR_KNOWNFOLDER (0x0400)

0x0400. Windows 7 e posterior. Relatar como sujo se o destino for uma pasta conhecida e a pasta conhecida tiver sido redirecionada. Isso só funcionará se o caminho de destino original for um caminho ou uma lista de IDs do sistema de arquivos e não uma lista de IDs de pasta conhecida com alias.

SLR_MACHINE_IN_LOCAL_TARGET (0x0800)

0x0800. Windows 7 e posterior. Resolva o nome do computador em destinos UNC que apontam para um computador local. Esse valor é usado com SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET.

SLR_UPDATE_MACHINE_AND_SID (0x1000)

0x1000. Windows 7 e posterior. Atualize o GUID do computador e o SID do usuário, se necessário.

Retornar valor

Tipo: HRESULT

Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

Após a criação do link, o nome ou o local do destino pode ser alterado. O método IShellLink::Resolve primeiro recupera o caminho associado ao link. Se o objeto não estiver mais lá ou tiver sido renomeado, Resolver tentará encontrá-lo. Se tiver êxito e as seguintes condições forem atendidas, o arquivo do qual o objeto de link foi carregado será atualizado para refletir o novo estado do objeto de link.

  • O sinalizador SLR_UPDATE está definido.
  • O destino foi movido ou renomeado, atualizando o estado interno do objeto de link do Shell para se referir ao novo destino.
  • O objeto de link shell foi carregado de um arquivo por meio de IPersistFile.
O cliente também pode chamar o método IPersistFile::IsDirty para determinar se o objeto de link foi alterado e se o arquivo precisa ser atualizado.

Resolver tem duas abordagens para localizar objetos de destino. O primeiro é o serviço de acompanhamento de link distribuído. Se o serviço estiver disponível, ele poderá encontrar um objeto que estava em um volume NTFS versão 5.0 e foi movido para outro local nesse volume. Ele também pode encontrar um objeto que foi movido para outro volume NTFS versão 5.0, incluindo volumes em outros computadores. Para suprimir o uso desse serviço, defina o sinalizador SLR_NOTRACK .

Se o rastreamento de link distribuído não estiver disponível ou não encontrar o objeto de link, Resolver tentará encontrá-lo com heurística de pesquisa. Primeiro, ele procura no último diretório conhecido do objeto um objeto com um nome diferente, mas os mesmos atributos e hora de criação do arquivo. Em seguida, ele pesquisa recursivamente subdiretórios nas proximidades do último diretório conhecido do objeto. Ele procura um objeto com o mesmo nome ou hora de criação. Por fim, Resolve procura um objeto correspondente na área de trabalho e em outros volumes locais. Para suprimir o uso da heurística de pesquisa, defina o sinalizador SLR_NOSEARCH .

Se ambas as abordagens falharem, o sistema exibirá uma caixa de diálogo solicitando um local ao usuário. Para suprimir a caixa de diálogo, defina o sinalizador SLR_NO_UI .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shobjidl_core.h
DLL Shell32.dll (versão 4.0 ou posterior)