Confidencial de WindowsExplorador de Windows no crea texto

Raymond Chen

Había una vez la herramienta Send To X PowerToy. Ésta le permitía hacer cosas ingeniosas, tales como seleccionar un conjunto de archivos, hacer clic con el botón secundario y seleccionar Send To Clipboard as Names. Como se esperaba, copiaba los nombres de los archivos seleccionados al Portapapeles.

Desde luego era un Powertoy útil, pero en primer lugar: ¿por qué tenía que existir? ¿Por qué no se puede simplemente copiar los archivos en Explorador de Windows® y pegarlos como texto para obtener sus nombres de archivo? O mejor aún: ¿por qué no se puede simplemente arrastrar los archivos fuera de Explorador de Windows y colocarlos en el Bloc de notas para obtener los nombres?

Lo intentamos, pero no funcionó.

La transferencia de datos, mediante el Portapapeles o mediante arrastrar y soltar, se realiza mediante objetos de datos OLE, representados por la interfaz IDataObject. Un objeto de datos ofrece una variedad de formatos. Algunos formatos del Portapapeles, incluidos texto y mapas de bits, se han usado desde los inicios de Windows. Los otros se han agregado con el tiempo. Cuando las capacidades de arrastrar y soltar archivos llegaron por primera vez a Windows, consistían en un HDROP. Podía pasarle funciones tales como DragQueryFile, por ejemplo, para extraer los nombres de archivo. Cuando copia algo al Portapapeles desde Explorador de Windows, el objeto de datos resultante ofrece, entre otras cosas, el HDROP mencionado, el contenido del archivo y un descriptor del grupo del archivo. Pero uno de los formatos que el objeto de datos no ofrece es texto.

Cuando a un destino de colocación (una ubicación en la que puede soltar objetos) se le indica que un objeto de datos se está arrastrando sobre él o se está soltando en él, el destino de colocación pregunta al objeto de datos "¿Qué tienes?". El objeto de datos responde con una lista de todos los formatos que admite, en orden descendente de preferencia. Es decir, el primer formato que el objeto de datos devuelve es el formato que mejor describe el objeto. A continuación, sigue el formato de segunda categoría, etc., hasta llegar al último formato, que es sólo una pálida sombra del objeto original. Por ejemplo, el objeto de datos que representa algunos objetos que se arrastran fuera de una ventana de Explorador de Windows probablemente ofrecerían primero una lista de identificadores de shell, debido a que eso es una representación casi perfecta del contenido de una ventana de Explorador de Windows. Lo siguiente en la lista quizás sea un descriptor del grupo del archivo, seguido por el contenido del archivo y, a continuación, un HDROP.

En 1998, el equipo de shell intentó agregar texto sin formato a la lista de formatos ofrecidos, y lo puso al final de la lista. Esencialmente, es como decir "si realmente está desesperado, por lo menos puede obtener algún texto mío (concretamente, la lista de archivos)". Desafortunadamente, sucede que muchos programas se distraen con el formato brillante de texto y dicen "Ooooh, yo quiero texto". Estos programas fueron directamente al formato de texto que no contenía más que una lista de archivos. Como resultado, cuando arrastraba un archivo de Explorador de Windows y lo soltaba en un documento, el programa sólo insertaba el nombre de archivo en vez de insertar el archivo en el documento.

Uy.

Debido al resultado altamente negativo en la compatibilidad de la aplicación, se dio marcha atrás en este cambio. Como resultado, cuando arrastra y suelta o pega archivos que se copian de Explorador de Windows, el objeto de datos de shell no ofrece los nombres de archivo como texto.

Sin embargo, Windows Vista® corrige este antiguo error y le ofrece un modo de copiar la ruta de acceso como texto: mantenga presionada la tecla Mayús cuando hace clic con el botón secundario para obtener el menú contextual ampliado. Esto presentará la nueva opción Copiar como ruta de acceso. No se necesita ningún Powertoy.

Raymond Chen The Old New Thing, y en su libro del mismo nombre (Addison-Wesley, 2007) se trata la historia de Windows y la programación de Win32. Deja a otros el trabajo de hacer mecanismos operativos.

© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproducción parcial o total sin previa autorización.