Pergunta

Eu criei uma extensão do Windows Shell usando o ATL (Visual Studio 2008). Possui os seguintes módulos e cada módulo é um objeto ATL separado com seu próprio arquivo .rgs para registro:-

  1. IshellFolder/Ishellview -> Para uma unidade virtual no Windows Explorer
  2. Icontextmenu/ishellextinit -> Para arquivos e pastas de menu pop -up
  3. IshelliconoverlayIdentifier - para exibir ícones de sobreposição em arquivos e pastas
  4. IshellPropsheetExt/ishellextinit -> Para uma página de propriedade personalizada nas propriedades de arquivos e pasta

A boa funcionamento do WINXP e sou capaz de depurar essa extensão do shell no WinXP. Mas, assim que mudei para o Vista, só recebo o método chama (2) e (4). A unidade é criada no Windows Explorer, mas os métodos subjacentes não são chamados quando clico nele. Embora quando eu clique com o botão direito do mouse, sou chamado (2) e quando seleciono "propriedades" para um arquivo ou pasta, entro no código para (4).

Existe alguma interface que estou faltando para (1) e (3) no Vista. Não consegui encontrar documentação completa e detalhada sobre a gravação de extensões de shell para o Vista no MSDN. Eu já havia passado pelos artigos do CodeProject sobre extensões de shell.

Foi útil?

Solução

O problema foi por causa de um uso de ponteiro inteligente XML. Tinha problemas quando a release () foi chamada nele.

Verifique este linkInternet Explorer trava quando msxml2 :: ixmldomDocumentPtr -> release () é chamado

Outras dicas

Certifique -se de que suas extensões estejam lidando com a inicialização corretamente, caso contrário, o verclsid.exe não permitirá que sua extensão seja carregada. verclsid.exe primeiro carrega as extensões do shell e faz uma verificação rápida antes de enviar um 'ok' para o shell indicando que é seguro carregar a extensão.

Ver aqui Para alguns detalhes sobre verclsid.exe.

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