Error: Utilizar el modo clásico de Windows en Windows Explorer devuelve valor incorrecto para SelectedItems

Seleccione idioma Seleccione idioma
Id. de artículo: 819499 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

Al establecer el Explorador de Windows para mostrar carpetas en el modo Clásico de Windows , método de la interfaz IShellFolderViewDual SelectedItems devuelve un conjunto incorrecto de FolderItems .

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

Pasos para reproducir el comportamiento

  1. Abra un editor de texto, como el Bloc de notas, pegue el código siguiente en un archivo nuevo y, a continuación, guarde el archivo 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. En un símbolo del sistema, compile el archivo ejecutando el comando siguiente: cl /EHsc Sample.cpp
  3. Cierre todas las ventanas de explorador de Windows que están abiertas actualmente.
  4. Haga clic con el botón secundario del mouse en Inicio y, a continuación, haga clic en explorar para abrir una ventana del explorador de Windows.
  5. En el menú Herramientas , haga clic en carpeta Opciones
  6. En la ficha General , seleccione la opción carpetas clásicas de Windows uso en la Vista Web y, a continuación, haga clic en Aceptar .
  7. Seleccione una carpeta que contiene muchos elementos. En el panel derecho, seleccione algunos de los elementos en esta carpeta.
  8. En un símbolo del sistema, ejecute el ejecutable Sample.exe (que ha generado en el paso 2).

    El resultado muestra el resultado de la propiedad Count de la instancia FolderItems devuelto por el método de interfaz IShellFolderViewDual SelectedItems .

    Se espera que el resultado en el número de elementos seleccionados en la carpeta en el Explorador de Windows del paso anterior. Sin embargo, el resultado contiene el número de todos los elementos en la carpeta que seleccionó en el Explorador de Windows.
  9. Cuando está en el Explorador de Windows en modo de vista Web , los elementos de carpeta que se devuelven por SelectedItems se establece correctamente en las instancias de FolderItem que están seleccionadas.

    Para comprobar la instrucción anterior en el Explorador de Windows, en el menú Herramientas , haga clic en Opciones de carpeta .
  10. En la ficha General , haga clic en la opción Habilitar Web contenido en mi escritorio en Vista Web y, a continuación, haga clic en Aceptar para cerrar el cuadro de diálogo.
  11. En un símbolo del sistema, ejecutar Sample.exe (generado en el paso 2).

    El resultado muestra el resultado de la propiedad Count de la instancia FolderItems devuelto por el método de interfaz IShellFolderViewDual SelectedItems .

    El resultado es, como se esperaba, el número de elementos que haya seleccionado en la carpeta.
Como alternativa, puede utilizar el método FocusedItem de la interfaz IShellFolderViewDual para reemplazar la funcionalidad del método SelectedItems incorrecta. El método de FocusedItem devuelve el elemento actualmente seleccionado en la carpeta y restringe la aplicación para una selección de carpeta único en el Explorador de Windows.

Referencias

Para obtener información adicional acerca del guía de programación de shell, consulte la documentación de MSDN siguiente:
Manual del programador de shell
http://msdn2.microsoft.com/en-us/library/bb776778.aspx

Propiedades

Id. de artículo: 819499 - Última revisión: miércoles, 26 de febrero de 2014 - Versión: 3.4
La información de este artículo se refiere a:
  • Microsoft Windows 2000
Palabras clave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbshell kbbug KB819499 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 819499

Enviar comentarios

 

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