Pergunta

Eu criei uma extensão de namespace com raiz no Desktop.O principal objetivo da extensão é fornecer uma lista virtual de arquivos ZIP que representam uma lista de diretórios configuráveis.Quando o usuário clica em um desses itens, o conteúdo do diretório relacionado é compactado e o arquivo ZIP resultante é armazenado em uma pasta de cache.

Tudo isso funciona bem, exceto por um problema menor.Se formos ao Windows Explorer, abra a extensão e clique duas vezes em um item, o arquivo aberto é o do cache.[CORRETO]

Se por outro lado o abrirmos por meio de uma caixa de diálogo aberta, o arquivo aberto será de um diretório de arquivos temporários da Internet.[INCORRETA]

O que devo alterar para a caixa de diálogo Abrir (quando usada, por exemplo, através do notepad.exe) para abrir o arquivo da pasta cache e não dos arquivos temporários da Internet.Tentei enviar sempre o nome do arquivo qualificado em IShellFolder::GetDisplayNameOf, mas sem sorte.

Foi útil?

Solução 2

O problema foi resolvido mascarando SFGAO_FILESYSTEM nos atributos retornados pela implementação do método de interface IShellFolder::GetAttributesOf.

Outras dicas

Parece que você não está passando o diretório inicial correto (no parâmetro lpstrInitialDir ou lpstrFile da sua estrutura OPENFILENAME).

Digite seu diretório de cache em lpstrInitialDir e deixe lpstrFile em branco e deve funcionar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top