Método IShellLinkW::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 mais informações ao usuário 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 do sistema de arquivos ou uma lista de IDs 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 shell para se referir ao novo destino.
- O objeto de link shell foi carregado de um arquivo por meio de IPersistFile.
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, Resolver 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 ao usuário um local. 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) |