Erro: Usando o modo clássico do Windows no Windows Explorer retorna valor incorreto para SelectedItems

Traduções deste artigo Traduções deste artigo
ID do artigo: 819499 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você definir o Windows Explorer para exibir pastas no modo Clássico do Windows , o método SelectedItems da interface IShellFolderViewDual retorna um conjunto incorreto de FolderItems .

Situação

A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

Passos para reproduzir o problema

  1. Abrir um editor de texto, como o bloco de notas, cole o código a seguir em um arquivo novo e, em seguida, salve o arquivo como Sample.cpp :
    #include <Windows.h>
    #include <TChar.h>
    #import <SHDocVw.dll>
    #import <Shell32.dll>
    #include <iostream>
    using namespace std;
    
    int _tmain(int argc, TCHAR ** argv)
    {
        CoInitialize(0);
        try
        {    
            SHDocVw::IShellWindowsPtr sw(__uuidof(SHDocVw::ShellWindows));
            for (long i = 0; i < sw->Count; ++i)
            {
                if (SHDocVw::IWebBrowser2Ptr ie = sw->Item(i))
                {
                    cout << _com_util::ConvertBSTRToString(ie->LocationURL) << endl;
                    if (Shell32::IShellFolderViewDualPtr view = ie->Document)
                    {
                       cout << view->SelectedItems()->Count << _T(" selected item(s)") << endl;
                    }
                }
            }
        }
        catch (_com_error const & e)
        {
            cout << e.ErrorMessage() << endl;
        }
        CoUninitialize();
        return 0;
    }
  2. Em um prompt de comando, compile o arquivo executando o seguinte comando: cl /EHsc Sample.cpp
  3. Feche todas as janelas da Windows Explorer que estão abertas.
  4. Clique com o botão direito do mouse em Iniciar e, em seguida, clique em explorar para abrir uma janela do Windows Explorer.
  5. No menu Ferramentas , clique em pasta opções
  6. Na guia Geral , selecione a opção usar pastas clássicas do Windows em Modo de exibição da Web e, em seguida, clique em OK .
  7. Selecione uma pasta que contém muitos itens. No painel direito, selecione alguns dos itens nesta pasta.
  8. No prompt de comando, execute o executável Sample.exe (que é gerado na etapa 2).

    A saída exibe o resultado da propriedade Count da instância FolderItems retornado pelo método de interface IShellFolderViewDual SelectedItems .

    Você espera que a saída para o número de itens que você selecionou na pasta no Windows Explorer a partir de etapa anterior. No entanto, o resultado contém o número de todos os itens na pasta que foi selecionado no Windows Explorer.
  9. Quando Windows Explorer está no modo de exibição da Web , os itens da pasta que são retornados pelo SelectedItems corretamente é definido como as instâncias de FolderItem que estão selecionadas.

    Para verificar a instrução anterior no Windows Explorer, no menu Ferramentas , clique em Opções de pasta .
  10. Na guia Geral , clique na opção Ativar conteúdo da Web na área de trabalho em Modo de exibição da Web e, em seguida, clique em OK para fechar a caixa de diálogo.
  11. No prompt de comando, execute Sample.exe (gerado na etapa 2).

    A saída exibe o resultado da propriedade Count da instância FolderItems retornado pelo método de interface IShellFolderViewDual SelectedItems .

    A saída é, conforme o esperado, o número de itens que você selecionou na pasta.
Como alternativa, você pode usar o método FocusedItem da interface IShellFolderViewDual para substituir a funcionalidade do método SelectedItems incorreta. O método FocusedItem retorna o item selecionado no momento na pasta e restringe seu aplicativo a uma seleção única pasta no Windows Explorer.

Referências

Para obter informações adicionais sobre o Shell de guia de programação, consulte a seguinte documentação do MSDN:
Guia do programador do shell
http://msdn2.microsoft.com/en-us/library/bb776778.aspx

Propriedades

ID do artigo: 819499 - Última revisão: quinta-feira, 27 de fevereiro de 2014 - Revisão: 3.4
A informação contida neste artigo aplica-se a:
  • Microsoft Windows 2000
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbshell kbbug KB819499 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 819499

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com