Erro: Utilizar o modo clássico do Windows no Windows Explorer devolve valor incorrecto para SelectedItems

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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 819499
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sintomas
Quando define o Explorador do Windows para apresentar pastas no modo Windows clássico , o método SelectedItems da interface IShellFolderViewDual devolve um conjunto de FolderItems incorrecto.
Ponto Da Situação
A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.
Mais Informação

Passos para reproduzir o comportamento

  1. Abra um editor de texto, tal como o bloco de notas, cole o seguinte código num novo ficheiro e, em seguida, guarde o ficheiro 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. Numa linha de comandos, compile o ficheiro executando o seguinte comando: cl /EHsc Sample.cpp
  3. Feche as janelas Explorador do Windows que estão actualmente abertas.
  4. Clique com o botão direito do rato em Iniciar e, em seguida, clique em explorar abrir uma janela do Explorador do Windows.
  5. No menu Ferramentas , clique em pasta Opções
  6. No separador Geral , seleccione a opção pastas clássicas de utilizar o Windows Vista da Web e, em seguida, clique em OK .
  7. Seleccione uma pasta que contém muitos itens. No painel da direita, seleccione alguns dos itens nesta pasta.
  8. Numa linha de comandos, execute o executável exemplo.exe (que gerou no passo 2).

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

    Pensa que a saída para o número de itens que seleccionou na pasta no Explorador do Windows no passo anterior. No entanto, o resultado contém o número de todos os itens na pasta que foi seleccionado no Explorador do Windows.
  9. Quando O Explorador do Windows está no modo de vista Web , os itens de pasta que são devolvidos pelo SelectedItems correctamente está definido para as instâncias de FolderItem estão seleccionadas.

    Para verificar a instrução anterior no Explorador do Windows, no menu Ferramentas , clique em Opções de pastas .
  10. No separador Geral , clique na opção Permitir conteúdo da Web no ambiente de trabalho em Vista Web e, em seguida, clique em OK para fechar a caixa de diálogo.
  11. Numa linha de comandos, execute exemplo.exe (gerado no passo 2).

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

    A saída é, conforme esperado, o número de itens que seleccionou na pasta.
Em alternativa, pode utilizar o método FocusedItem da interface IShellFolderViewDual para substituir a funcionalidade incorrecta do método SelectedItems . O método FocusedItem devolve o item seleccionado actualmente na pasta e restringe a aplicação uma selecção única pasta no Explorador do Windows.
Referências
Para obter informações adicionais sobre a shell do Guia de programação, consulte a documentação da MSDN seguinte:

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 819499 - Última Revisão: 02/24/2014 20:34:22 - Revisão: 3.4

Microsoft Windows 2000

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbshell kbbug KB819499 KbMtpt
Comentários